集合是容器,不同的集合具有不同的特性
容器里面存放的都是包装类(对象),基本数据类型也要转化为包装类
Set集合 – 自动去重 add
set遍历只能使用迭代器
List集合 – 不会自动排序 add
Map集合 – 存放数据 (key:value(键值对)) put
* List
* 线程安全:使用 Vector
* 非线程安全 : ArrayList linkedList
*
*
* Map
* 线程安全: hashtable
* 线程不安全:hsahmap
*
1. Map
map是接口,不能被实例化,需要实例化它的子类(子类是父类的扩充,继承了父类的所有方法,可以通过子类调用父类的方法)
map的重要子类有:Hashmap(不自动排序) LinkedHashmap(自动排序) Treemap
- Hashmap
package map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Map_HashMap {
public static void main(String[] args) {
Map map = new HashMap();
map.put(1, 2);
//map.put(1, 3);
map.put(2, 3);
//通过key获取value (key不能重复,否则前面的key会被后面覆盖)
//System.out.println(map.get(1));
//遍历
//方法1 :获取所有的键,不会重复 set 去重
Set keyset = map.keySet();
Iterator iterator = keyset.iterator();
for(; iterator.hasNext();) {
Object key = iterator.next();
System.out.println(key + " - " +map.get(key));
}
DieDai(map);
//方法3 : 枚举器 hashtable() 不重要
System.out.println("=========常用方法==============");
System.out.println("==========1=======================");
//介绍hashmap中常用的方法
//1.判断map中是否包含键:2
boolean containsKey = map.containsKey(2);
System.out.println(containsKey);
System.out.println("==========2========================");
//2.判断map中是否包含值:2
boolean containsValue = map.containsValue(2);
System.out.println(containsValue);
System.out.println("==========3========================");
//3.判断当前集合中是否包含键:3的键值对,找到了就从
//集合中取出,找不到就将该键值对插入集合并且拿出键为3的value
Object o = map.getOrDefault(3, "张三");
System.out.println(o);
System.out.println("==========4========================");
//4判断map是否为空
//map.clear();
System.out.println(map.isEmpty());
System.out.println("==========5========================");
//5.合并两个map
HashMap map2 = new HashMap();
map2.put("3", "李四");
map2.put(false, 1);
map.putAll(map2);
//5.2用Entry遍历
DieDai(map);
System.out.println("==========6========================");
//6.删除,使用key来删除
map.remove(false);
System.out.println("==========7========================");
//7.替代
map.replace("3", "王五");
DieDai(map);
System.out.println("==========8========================");
//8.size() 获取容器中的数据量,容器中存放了多少条数据
System.out.println(map.size());
System.out.println("==========9========================");
//9.
Collection values = map.values();
Iterator iterator3 = values.iterator();
while(iterator3.hasNext()) {
}
}
//抽取打印的迭代方法
private static void DieDai(Map map) {
Set entrySet2 = map.entrySet();
Iterator iterator3 = entrySet2.iterator();
for(;iterator3.hasNext();) {
Entry e = (Entry) iterator3.next();
System.out.println(e.getKey()+ " - " +e.getValue());
}
}
}
- Hashtable
package map;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
/**
* Hashtable
* Hashtable与HashMap之间的区别: 多了一个遍历的方式,枚举器
* @author Administrator
*
*/
public class Map_Hashtable {
public static void main(String[] args) {
Hashtable map = new Hashtable();
map.put(1, 2);
//1Hashtable遍历
//1.1.获取key 通过key找value
Set keySet = map.keySet();
Iterator iterator = keySet.iterator();
while(iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key);
System.out.println(map.get(key));
}
System.out.println("=======================");
//1.2.获取entry对象 entry封装key+value
Set entrySet = map.keySet();
Iterator iterator2 = entrySet.iterator();
while(iterator2.hasNext()) {
Entry e = (Entry) iterator2.next();
System.out.println(e.getKey());
System.out.println(e.getValue());
}
System.out.println("=======================");
//1.3.获取枚举器elements
Enumeration elements = map.elements(); //获取一个枚举器
while(elements.hasMoreElements()) {
Object key = elements.nextElement();
System.out.println(key);
System.out.println(map.get(key));
}
}
}
区别:需要线程安全的时候,使用Hashtable ,不需要线程安全的使用Hashmap