List 和 Set 是 Colleiton 的 子接口。
接口标准为:
List : 有序可重
Set : 无序不可重
其实,有序或无序是指是否按照其添加的顺序来存储对象。List 是按照元素的添加顺序来存储的。而 Set 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以不能保证内部存储是按元素添加的顺序而存储的。
测试用例:
package wy.Collection;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/**
* 测试 List 的有序,Set的无序
* @author Gabrielle
*
*/
public class Test01_AddedOrder {
public static void main(String[] srgs) {
List<String> list = new ArrayList<String>();
list.add("s1");
list.add("s3");
list.add("s4");
list.add("s5");
list.add("s2");
// 输出结果:list = [s1, s3, s4, s5, s2]
System.out.println("list = " + list);
Set<String> set1 = new TreeSet<String>();
set1.add("s1");
set1.add("s3");
set1.add("s4");
set1.add("s5");
set1.add("s2");
// 输出结果:TreeSet=[s1, s2, s3, s4, s5]
System.out.println("TreeSet=" + set1);
Set<String> set2 = new HashSet<String>();
set2.add("s1");
set2.add("s3");
set2.add("s4");
set2.add("s5");
set2.add("s2");
// 输出结果:HashSet=[s3, s4, s5, s1, s2]
System.out.println("HashSet=" + set2);
Set<String> set3 = new LinkedHashSet<String>();
set3.add("s1");
set3.add("s3");
set3.add("s4");
set3.add("s5");
set3.add("s2");
// 输出结果:LinkedHashSet=[s1, s3, s4, s5, s2]
System.out.println("LinkedHashSet=" + set3);
}
}