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); } }