List 一定有序,Set不一定无序

List 一定有序,Set不一定无序,第1张

我们经常听说List是有序且重复的, Set 是无序不重复的。这里有个误区,这里说的顺序有两个概念,一是按添加的顺序排列,二是按自然顺序 a-z 排列。 Set 并不是无序的,传统说的
Set 无序是指 HashSet, 它不能保证元素的添加顺序,更不能保证自然顺序,而 Set 的其他实现类是可以实现这两种顺序的。

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

直接这样就行了,上面的是代码及输出结果,其中s2和s4是重复的,但是输出的结果中没有重复值

public static void main(String[] args) {

Set myList =new HashSet();

String s1= "aa";

String s2= "bb";

String s3= "cc";

String s4= "bb";

myListadd(s1);

myListadd(s2);

myListadd(s3);

myListadd(s4);

List myNeedList = new ArrayList(myList);

Systemoutprintln(myNeedList);

}

默认用的是less。
set内部用的是红黑树rb_tree。见>obaiducom/question/16113509html" target="_blank">>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13380000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存