一、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));
}
}
}