list接口可以存放任意類型的數據,而且在List接口中內容可以重復。
List接口常用子類有:ArrayList、Vector。
下面的Demo中展示了怎樣創建ArrayList對象、添加元素、訪問元素、移除元素。
package ucas.collection.demo;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List lists = null;
lists = new ArrayList();// list可重復
// 添加
lists.add("A");
lists.add("B");
lists.add("A");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
System.out.println("判斷集合lists是否為空:"+lists.isEmpty());
//返回第一次出現的位置
System.out.println("A是否存在:"+lists.indexOf("A"));
// 移除
lists.remove(0);
System.out.println("移除第一項以後:");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
}
}
Vector和ArrayList在使用上一樣,區別主要在於內部實現上的性能與是否是線程安全上:
VectorDemo
package ucas.collection.demo;
import java.util.List;
import java.util.Vector;
public class VectorDemo {
public static void main(String[] args) {
// ArrayList jdk1.2之後推出,采用異步處理方式,性能高,屬於非線程安全;
//Vector jdk1.0之後推出, 采用同步處理方式,性能低,屬於線程安全。
//方法使用都一樣
List lists = null;
lists = new Vector();
lists.add("A");
lists.add("B");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
}
}
Set接口中不可以加入重復元素,但是可以排序 。Set常用子類 有2個,散列存放使用HashSet ,有序存放使用TreeSet。
package ucas.collection.demo;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class SetDemo {
public static void main(String[] args) {
/*
* Set接口中不可以加入重復元素,但是可以排序 Set常用子類 散列存放:HashSet
* 有序存放:TreeSet
*/
Set s = null;
s = new TreeSet();
s.add("B");
s.add("A");
s.add("C");
s.add("D");
s.add("E");
s.add("F");
s.add("G");
System.out.println(s);
}
}
輸出:
[A, B, C, D, E, F, G]
HashSet:
package ucas.collection.demo;
import java.util.HashSet;
import java.util.Set;
public class HashSetDemo {
public static void main(String[] args) {
Set hs=new HashSet();
hs.add("two");
hs.add("one");
hs.add("three");
hs.add("four");
hs.add("five");
hs.add("six");
System.out.println(hs);
}
}
輸出
[six, four, one, two, three, five]
Map接口采用key->value的方式保存
常用子類:
HashMap:無序存放,key值不允許重復
HashTable:無序存放,key值不允許重復
package ucas.collection.demo;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo01 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("key1", "java進階1");
map.put("key2", "java進階2");
map.put("key3", "java進階3");
map.put("key4", "java進階4");
map.put("key5", "java進階5");
map.put("key6", "java進階6");
System.out.println(map.get("key1"));
// 判斷key值是否存在
if (map.containsKey("key12")) {
System.out.println("key存在");
} else {
System.out.println("key不存在");
}
// 判斷value是否存在
if (map.containsValue("java進階5")) {
System.out.println("value值存在");
} else {
System.out.println("value值不存在");
}
// Iterator循環輸出
System.out.println(map.keySet());
Set s = map.keySet();
Iterator iter = s.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
// 獲取全部值
Collection c = map.values();
Iterator iter2 = c.iterator();
while (iter2.hasNext()) {
System.out.println(iter2.next());
}
}
}
Iterator用於迭代輸出集合中的元素,迭代輸出就是將元素一個一個進行判斷,判斷有內容則把內容取出。
package ucas.collection.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo {
public static void main(String[] args) {
List lists = new ArrayList();
lists.add("Q");
lists.add("W");
lists.add("E");
lists.add("A");
lists.add("B");
Iterator iter = lists.iterator();
while (iter.hasNext()) {
// lists.remove(1);Iterator迭代輸出集合的過程中不能刪除元素,否則會出現錯誤
System.out.println(iter.next());
}
}
}