胡八一之Java(三):java集合概述
阿新 • • 發佈:2018-12-10
JAVA集合概述
(一)、Collection 和Iterator介面
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; public class Test{ public static void main(String args[]){ Collection c =new ArrayList(); c.add("張三"); c.add(6); System.out.println(c.size()); c.remove("張三"); System.out.println(c.size()); System.out.println("集合中是否包括張三:"+c.contains("張三")); Collection books = new HashSet(); books.add("三國演義"); books.add("紅樓夢"); System.out.println(books.size()); books.remove("三國演義"); System.out.println(books.size()); System.out.println("集合中是否包括三國:"+books.contains("三國演義")); System.out.println("C集合是否包括books集合?"+c.containsAll(books)); c.removeAll(books); System.out.println("c集合的元素"+c); c.clear(); System.out.println("c集合的元素"+c); books.retainAll(c); System.out.println("books集合的元素"+books); } }
雖然HashSet與ArrayList實現類不同,但當把他們當成Collection來使用時,使用add,remove,clear 方法時,它們沒有區別。
(二)使用Iterator介面遍歷集合元素
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class Test{ public static void main(String args[]){ Collection books = new HashSet(); books.add("三國演義"); books.add("紅樓夢"); Iterator it = books.iterator(); while(it.hasNext()){ String book =(String)it.next(); System.out.println(book); if(book.equals("紅樓夢")){ //從集合中刪除上一次next方法返回的元素 it.remove(); } book ="haha"; } System.out.println(books); } }
Iterator必須依附於Collection物件,若有一個Iterator物件,則必然有一個與之關聯的Collection物件。Iterator提供了兩個方法迭代訪問Collection集合裡的元素,並可通過remove()方法來刪除上一次next()方法返回的集合元素。
當使用Iterator對集合元素進行迭代時,Iterator並不是把集合元素本身傳給了迭代變數,而是把這個集合元素的值傳給了迭代變數,所以修改迭代變數的值對集合元素沒有任何影響。
當實驗Iterator迭代訪問Collection元素 時,Collection集合裡的元素不能被改變,只有通過Iterator的remove方法來刪除上一次的next方法返回的集合元素才可以;否則會引發java.util.ConcurrentModificationException異常。
使用foreach迴圈遍歷元素
HashSet類
HashSet類具有以下特點:
不保證元素的排列順序 不是同步的,多個執行緒訪問時需要用程式碼控制 集合元素值可以是null
HashSet集合判斷兩個元素相等的標準是通過equals()方法比較相等,並且兩個物件的hashCode()方法的返回值也相等