List有序可重复,Set无序不重复!

简介: List有序可重复,Set无序不重复,这里指的是添加数据的顺序。

List有序可重复,Set无序不重复,这里指的是添加数据的顺序。


但这里说的顺序有两个概念,一是按添加的顺序排列,二是遍历结果按自然顺序a-z排列。Set并不是无序的,传统说的Set无序是指HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。


保证元素添加的顺序,不保证元素自然的顺序,可重复:List


不保证元素添加的顺序,不保证元素自然的顺序,不可重复:HashSet


保证元素添加的顺序,不可重复:L i n k e d H a s h S e t \color{#FF0000}{LinkedHashSet}LinkedHashSet


保证元素自然的顺序,不可重复:TreeSet


实例:

package com.xhy.xczx.test;
import java.util.*;
/**
 * 〈测试类〉
 *
 * @author Barrett
 * @version 1.0.0
 * @time 2020/1/21
 */
public class JavaTest1 {
    public static void main(String[] args) {
        /** List 保证元素的添加顺序,可以重复 **/
        List<String> list = new ArrayList<String>();
        list.add("s1");
        list.add("s3");
        list.add("s5");
        list.add("s4");
        list.add("s4");
        list.add("s2");
        list.forEach(e -> System.out.print(e + " "));
        System.out.println();
        /** HashSet  无序 不能重复**/
        Set<String> hashSet = new HashSet<>();
        hashSet.add("s1");
        hashSet.add("s3");
        hashSet.add("s5");
        hashSet.add("s4");
        hashSet.add("s4");
        hashSet.add("s2");
        hashSet.forEach(e -> System.out.print(e + " "));
        System.out.println();
        /** LinkedHashSet 保证元素添加的顺序**/
        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("s1");
        linkedHashSet.add("s3");
        linkedHashSet.add("s5");
        linkedHashSet.add("s4");
        linkedHashSet.add("s4");
        linkedHashSet.add("s2");
        linkedHashSet.forEach(e -> System.out.print(e + " "));
        System.out.println();
        /** 保证元素自然的顺序:TreeSet **/
        Set<String> treeSet = new TreeSet<>();
        treeSet.add("s1");
        treeSet.add("s3");
        treeSet.add("s5");
        treeSet.add("s4");
        treeSet.add("s4");
        treeSet.add("s2");
        treeSet.forEach(e -> System.out.print(e + " "));
        System.out.println();
    }
}

结果:

130f6197502ca6e498270f2417fe5c98_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdfZ3Vhbmcz,size_16,color_FFFFFF,t_70.png

目录
相关文章
|
14天前
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
51 20
|
4月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
6月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
29 3
|
4月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
4月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
4月前
|
存储 Java 索引
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
38 0
|
5月前
|
消息中间件 JSON NoSQL
Redis深度解析:核心数据类型之hash、list、set
Redis深度解析:核心数据类型之hash、list、set
|
5月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法