package Collection; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.junit.Test; /** * * @author LYJ * List接口: * 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那么集合中,元素的存儲就是按照11、22、33的順序完成的)。 * 它是一個帶有索引的集合,通過索引就可以精確的操作集合中的元素(與數組的索引是一個道理)。 *集合中可以有重復的元素,通過元素的equals方法,來比較是否為重復的元素。 * * List接口的常用子類有: * ArrayList集合 ArrayList集合數據存儲的結構是數組結構。元素增刪慢,查找快,由於日常開發中使用最多的功能為查詢數據、遍歷數據,所以ArrayList是最常用的集合。 * LinkedList集合 LinkedList集合數據存儲的結構是鏈表結構。方便元素添加、刪除的集合。實際開發中對一個集合元素的添加與刪除經常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。 * 增強for * Itetator 迭代器 * 並發修改異常解決辦法:在迭代時,不要使用集合的方法操作元素。 * 那么想要在迭代時對元素操作咋辦?通過ListIterator迭代器操作元素是可以的,ListIterator的出現,解決了使用Iterator迭代過程中可能會發生的錯誤情況。 * */ public class Collection_Demo2 { /** * 增強for * */ @Test public void testFor() { // 創建集合添加元素 Collection<String> coll = new ArrayList<String>(); coll.add("no"); coll.add("zuo"); coll.add("no"); coll.add("die"); for(String c :coll) { System.out.print(c+" "); } //輸出結果 no zuo no die } /***************************************************** * Iterator迭代器 */ @Test public void testIterator() { // 創建集合添加元素 Collection<String> coll = new ArrayList<String>(); coll.add("no"); coll.add("zuo"); coll.add("no"); coll.add("die"); // 利用list集合方法iterator獲取迭代器對象 Iterator<String> it = coll.iterator(); //利用迭代器hasNext()方法判斷集合是否有元素, //用迭代器next()方法獲取元素,自動跳到下一個元素 while(it.hasNext()) { System.out.print(it.next()); System.out.print(" ");//輸出一個空格 } //輸出 no zuo no die } /* * Set集合的遍歷 * Set接口是無序集合,存儲和取出順序不同,沒有索引,不存儲同類元素 * * */ @Test public void testSet() { Set<String> set = new HashSet<String>(); //給集合中添加自定義對象 set.add("zhangsan"); set.add("lisi"); set.add("wangwu"); set.add("zhangsan"); //取出集合中的每個元素 Iterator<String> it = set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } /** * 輸出 lisi zhangsan wangwu * * Set集合不能存重復元素 * HashSet中LinkedHashSet是有序的鏈表集合 */ } }
