Java 集合的有序和无序总结

1. List 一定是有序的

ArrayList 和 LinkedList 中的元素的顺序是按照添加时的顺序排列的。这就是所说的List 有序。

2. Set 不一定是无序的

HashSet 是无序的,不能保证元素的添加顺序。

LinkedHashSet 可以保证元素的添加顺序。

TreeSet 是根据元素的自然顺序进行排序的(A-Z)

类型是否可以重复是否保证元素添加的顺序是否保证元素自然的顺序(A-Z)List可以是否HashSet不可以否否LinkedHashSet不可以是否TreeSet不可以否是

// 1. ArrayList 输出 s1 s3 s5 s4 s2

List arrayList = new ArrayList<>();

arrayList.add("s1");

arrayList.add("s3");

arrayList.add("s5");

arrayList.add("s4");

arrayList.add("s2");

System.out.println(">>>>>>>>>>>>>>>>> ArrayList" );

for (String s : arrayList) {

System.out.print(s + " ");

}

System.out.println();

// 2. LinkedList 输出 s1 s3 s5 s4 s2

List linkedList = new LinkedList<>();

linkedList.add("s1");

linkedList.add("s3");

linkedList.add("s5");

linkedList.add("s4");

linkedList.add("s2");

System.out.println(">>>>>>>>>>>>>>>>> LinkedList" );

for (String s : linkedList) {

System.out.print(s + " ");

}

System.out.println();

// 3. HashSet 输出 s3 s4 s5 s1 s2

Set hashSet = new HashSet<>();

hashSet.add("s1");

hashSet.add("s3");

hashSet.add("s5");

hashSet.add("s4");

hashSet.add("s2");

System.out.println(">>>>>>>>>>>>>>>>> HashSet" );

for (String s : hashSet) {

System.out.print(s + " ");

}

System.out.println();

// 4. LinkedHashSet 输出 s1 s3 s5 s4 s2

Set linkedHashSet = new LinkedHashSet<>();

linkedHashSet.add("s1");

linkedHashSet.add("s3");

linkedHashSet.add("s5");

linkedHashSet.add("s4");

linkedHashSet.add("s2");

System.out.println(">>>>>>>>>>>>>>>>> LinkedHashSet" );

for (String s : linkedHashSet) {

System.out.print(s + " ");

}

System.out.println();

// 5. TreeSet 输出 s1 s2 s3 s4 s5

Set treeSet = new TreeSet<>();

treeSet.add("s1");

treeSet.add("s3");

treeSet.add("s5");

treeSet.add("s4");

treeSet.add("s2");

System.out.println(">>>>>>>>>>>>>>>>> TreeSet" );

for (String s : treeSet) {

System.out.print(s + " ");

}