treeset 是有序吗_List 一定有序,Set不一定无序

坐标:江苏 南京

我们经常听说List是有序且重复的, Set 是无序不重复的。这里有个误区,这里说的顺序有两个概念,一是按添加的顺序排列,二是按自然顺序 a-z 排列。 Set 并不是无序的,传统说的

Set 无序是指 HashSet, 它不能保证元素的添加顺序,更不能保证自然顺序,而 Set 的其他实现类是可以实现这两种顺序的。

先来看看一段测试代码:

public class CollectionTest {

public static void main(String[] args) {

List arrayList = new ArrayList();

arrayList.add("s1");

arrayList.add("s3");

arrayList.add("s4");

arrayList.add("s5");

arrayList.add("s2");

System.out.println("ArrayList:==========================");

for(String arrList : arrayList){

System.out.println(arrList);

}

List linkedList = new LinkedList();

linkedList.add("s1");

linkedList.add("s3");

linkedList.add("s4");

linkedList.add("s5");

linkedList.add("s2");

System.out.println("LinkedList:===========================");

for(String linkList : linkedList){

System.out.println(linkList);

}

Set hashSet = new HashSet();

hashSet.add("s1");

hashSet.add("s3");

hashSet.add("s4");

hashSet.add("s5");

hashSet.add("s2");

System.out.println("HashSet:==============================");

for(String hashst: hashSet){

System.out.println(hashst);

}

Set linkedHashSet = new LinkedHashSet();

linkedHashSet.add("s1");

linkedHashSet.add("s3");

linkedHashSet.add("s4");

linkedHashSet.add("s5");

linkedHashSet.add("s2");

System.out.println("LinkedHashSet:=========================");

for(String linkedst : linkedHashSet){

System.out.println(linkedst);

}

Set treeSet = new TreeSet();

treeSet.add("s1");

treeSet.add("s3");

treeSet.add("s4");

treeSet.add("s5");

treeSet.add("s2");

System.out.println("TreeSet:==============================");

for(String treest : treeSet){

System.out.println(treest);

}

}

下面输出的结果:

ArrayList:==========================

s1

s3

s4

s5

s2

LinkedList:===========================

s1

s3

s4

s5

s2

HashSet:==============================

s3

s4

s5

s1

s2

LinkedHashSet:=========================

s1

s3

s4

s5

s2

TreeSet:==============================

s1

s2

s3

s4

s5

怎么样看出来了吧,我们通常说的 List 是you序的指的就是最后集合中的元素顺序就是按照添加时候的顺序排列的(无论是实现类 ArrayList, 还是 LinkedList)。但是我们发现 Set 所谓的无序就是在 HashSet 这个实现类中才会出现的这种情况,而 LinkedHashSet 已经和 List 的结果相同了,再看 TreeSet 实现的功能是根据元素的自然顺序排列了。

小伙伴们明白了吗? 以后不要再说 Set 无序了啊! O_O

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值