Java集合大致分為三類:set、map、list(queue,JDK1.5之后新增,dictionary過時類似map鍵值對存儲形式)
使用時引入 java.util
set: 無序不可重復集合
map:具有映射關系的集合
list:有序,可重復的集合
集合示意圖
Paste_Image.png
Java的集合類主要由Java集合框架的根接口collection、map派生而來
Paste_Image.png
Paste_Image.png
常用的collection和iterator接口
接口 | 描述 |
---|---|
boolean add(Object o) | 該方法用于向集合里添加一個元素,如果添加成功返回true |
boolean addAll(Collection c) | 該方法把集合c的所有元素添加到指定集合中,成功返回true |
void clear() | 清楚指定集合的所有元素,將集合長度變為0 |
**boolean contains(Object o) ** | 返回集合是夠包含指定元素 |
boolean containsAll(Collection c) | 返回集合是否包含指定元素 |
boolean isEmpty() | 返回集合是否為空 |
iterator iteraot | 返回一個iterator對象用于遍歷集合所有元素 |
boolean remove(Object o) | 刪除集合中的o元素,如果集合中有多個刪除多個,成功返回true |
boolean removeAll(Collection c) | 從集合中刪除集合c里包含的所有元素,相當于集合減去c集合,如果集合元素刪除了一個或多個返回true |
boolean retainAll(Collection c) | 從集合中刪除不包含c集合里不包含的元素,返回true |
int size() | 返回集合元素的個數 |
Object[] toArray() | 把集合轉換為一個數組,所有集合元素變成數組元素 |
代碼示例
public static void main(String[] args) {
Collection c = new ArrayList();
//添加元素
c.add("鋼鐵是怎樣煉成的");
//雖然Java集合不能存放基本類型,但是Java支持自動裝箱
c.add(6);
System.out.println("c集合的元素個數是"+c.size());
//判斷是否包含指定字符串
System.out.println("判斷集合c是否包含指定的字符串"+c.contains("鋼鐵"));
c.add("朝花夕拾!");
System.out.println("c集合的元素"+c);
//刪除集合里的所有元素
Collection books = new HashSet();
books.add("鋼鐵是怎樣煉成的");
books.add("茶花女");
System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
//c集合的元素減去books的元素
c.removeAll(books);
System.out.println("移除之后c集合的元素"+c);
//刪除c集合中的所有元素
c.clear();
System.out.println("c集合的元素"+c);
//books集合里值剩下c集合里也同事包含的元素
books.retainAll(c);
System.out.print("books里的元素"+books);
}
}
**
ArrayList和HashMap實現類雖然不同,但是把他們當成Collection來使用時,使用 add、remove、clear等方法時完全一樣
所有Collection 的實現類重寫了toString()方法,該方法可以一次性輸出集合的所有元素
**
使用iterator接口遍歷集合元素
iterator迭代器主要用來遍歷集合元素
接口方法
方法 | 描述 |
---|---|
boolean hasNext() | 如果被迭代的集合元素都還沒有被遍歷,則返回true |
Object next() | 返回集合里面的下一個元素 |
void remove() | 刪除集合里上一次next方法返回的元素 |
代碼示例
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
public static void main(String[] args) {
//創建一個集合
Collection testCollection = new HashSet();
//添加元素
testCollection.add("霸王花!");
testCollection.add("三生三世");
testCollection.add("十里桃花");
// testCollection.clear();
//獲取對應的iterator
Iterator it = testCollection.iterator();
while(it.hasNext()){
//it.next()返回類型是Object需要強制轉換
String str = (String)it.next();
System.out.println(str);
System.out.println(testCollection);
if(str.equals("三生三世")){
it.remove();
}
}
}
}
**
Collection中的元素不能 被改變,只有通過 Iterator的remove方法先刪除next方法返回的元素,不然將會引發java.util.ConcrrentModificationException異常
**
使用foreach遍歷集合元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
public static void main(String[] args) {
//創建一個集合
Collection testCollection = new HashSet();
//添加元素
testCollection.add("十里桃花");
testCollection.add("三生三世");
testCollection.add("霸王花!");
// testCollection.clear();
//獲取對應的iterator
System.out.println(testCollection);
for(Object obj: testCollection){
String str = (String) obj;
System.out.println(str);
if (str.equals("三生三世")){
// testCollection.remove(); 引發異常
}
}
System.out.println(testCollection);
}
}