一、List 集合
- 集合:與數組相似,存放一些數據的集合
- List 集合 特點:
- 1.長度可變
- 2.可以發個不同的數據類型
- 3.通過下標來獲取數據
- 4.集合中的元素是有序的
- 5.允許有重複的元素
- 6.鏈表集合
二、set集合
- (1) set集合
- 特點:
- 1.沒有索引
- 2.不允許有重複元素
- 3.集合中放入元素是無序的
- 4.允許有null值
- 5.非線程安全
- (2)TreeSet
- 1.有序集合,元素按照自然序列排序
- 2.不能有null值
- 3.線程安全的
- 4.不允許有重複元素
三、Map集合
-
(1) HashMap: 鍵值對儲存 key : value
- 1.key不能重複,如果重複,value的值就會被覆蓋
- 2.key 和 value 都可以是空值
- 3.無序儲存的
- 4.非線程安全
-
(2)HashTable
- 1.不允許有null值(key和value都不能是null)
- 2.線程安全的
四、代碼測試
- (1)List 集合
package 練習;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
//list集合
/**
* 集合:與數組相似,存放一些數據的集合
*/
List list = new ArrayList();
list.add(123);
list.add("張三");
list.add(new Object());
list.add(null);
//輸出打印
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
//獲取集合長度
System.out.println("集合的長度:"+list.size());
//刪除集合
list.remove(0);
System.out.println("集合刪除後的長度:"+list.size());
//刪除一個元素後,後邊的元素會向前填補
System.out.println(list.get(0));
//遍歷集合
for(int i = 0 ; i < list.size() ; i++)
{
System.out.println(list.get(i));
}
/**
* 鏈表集合
*/
List<String> linklist = new LinkedList<String>();
linklist.add("123");
linklist.add("456");
linklist.add("789");
//輸出打印
for(int i = 0 ; i < linklist.size() ; i++){
System.out.println(linklist.get(1));
}
//第二種遍歷方式:集合中的類型應該是同一種類型
for(String temp :linklist ){
System.out.println(temp);
}
}
}
- (2)set集合
package 練習;
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<String> set = new HashSet<>() ;
set.add("123");
set.add("456");
set.add("ijk");
//重複添加只有一個123
set.add("123");
set.add("789");
set.add(null);
//輸出
System.out.println(set);
//輸出
for(String temp : set){
System.out.println(temp);
}
//集合中存放對象
Object obj1 = new Object();
Object obj2 = new Object();
HashSet<Object> objset = new HashSet<Object>();
objset.add(obj1);
objset.add(obj2);
//打印輸出
System.out.println(objset);
/**
* TreeSet
*/
Set<String> treeSet = new TreeSet<String>();
treeSet.add("a");
treeSet.add("e");
treeSet.add("c");
treeSet.add("f");
treeSet.add("b");
System.out.println(treeSet);
//迭代器
Iterator<String> it = treeSet.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
- (3)Map集合
package 練習;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
//Map
/**
* HashMap: 鍵值對儲存 key : value
*/
Map<String , String> map = new HashMap<String , String>();
map.put("1" , "北京");
map.put("2" , "上海");
map.put("3" , "廣州");
//通過key獲取數據
System.out.println(map.get("2"));
//修改數據
map.put("3","西安");
System.out.println(map.get("3"));
//設置null值
map.put(null,"其他城市");
System.out.println(map.get(null));
//刪除
map.remove("3");
//遍歷
//只遍歷value
Iterator<String> it = map.values().iterator();
while(it.hasNext()){
System.out.println("遍歷元素:"+it.next());
}
//同時遍歷key和value
for(String key : map.keySet()){
System.out.println(key+" : "+map.get(key));
}
//entrySet方法返回key和value的對象集合
for(Map.Entry<String , String> entry : map.entrySet()){
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+" : "+value);
}
/**
* HashTable
*/
Map<String , String> table = new Hashtable<>();
table.put("1" , "北京");
table.put("2" , "上海");
table.put("3" , "廣州");
for(String key : table.keySet()){
System.out.println(key+" : "+table.get(key));
}
}
}