Set<Integer> d=new HashSet<Integer>(); d.add(12); d.add(13); d.add(14); d.add(15); d.add(16); d.add(17); System.out.println(d);
你可以看到结果输出没有顺序,这是出于速度的考虑,HashSet使用了散列。HashSet所维护的顺序与TreeSet或者LinkedHashSet都不同,因为他们具有不用的元素实现方式。TreeSet将数据存储在红黑树数据结构中,而HashSet使用的是散列函数。LinkedHashSet因为查询速度的原因也使用了散列函数
,但是它看起来使用链表来维护元素的插入顺序。
如果你想对结果排序,一种方式是使用TreeSet代替
Random rand = new Random(47); Set<Integer> s = new TreeSet<Integer>(); for (int i = 0; i < 200; i++) { s.add(rand.nextInt(30)); } System.out.println(s);
如果你想要按照字母排序,就在构造器中传入String.CASE_INSENSITIVE_ORDER
Set<String> d = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);//按照字母排序 d.add("a"); d.add("b"); d.add("c"); d.add("d"); d.add("A"); d.add("B"); d.add("C"); d.add("D"); System.out.println(d);
原文:https://www.cnblogs.com/QianYue111/p/10247614.html