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