前言
温习并记录最近学的Map集合,同时也希望可以帮到大家(如果哪里记录的不正确,请各位批评指正)
HashMap
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapTest {
// Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的Key
// 另外一组用于保存Map里的Value,Map中的key和value 都可以是任何引用类型的数据
// Map中的Key不允许重复,即同一个Map对象的任何两个Key通过equals方法比较中返回false
// Key和Value之间存在单向一对一关系,即通过指定的,Key总能找到唯一的, 确定的Value.
// HashMap是线程不安全的
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
// 添加数据
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
System.out.println(map);
System.out.println(map.get("a")); // 根据key取值
// 移除键值对
map.remove("c");
System.out.println(map);
// map集合长度
System.out.println(map.size());
// 判断当前集合是否有指定的key,输出false或true
System.out.println(map.containsKey("a"));
// 判断当前集合是否有指定的key,输出false或true
System.out.println(map.containsValue(2));
// 清空集合 map.clear();
// map.clear();
System.out.println(map.keySet()); // 获取map集合中所有key的集合
System.out.println(map.values()); // 获取map集合中所有values的值
// 遍历map集合,通过map.keySet();
Set<String> keys = map.keySet();
System.out.println("通过map.keySet()遍历:");
for (String key : keys) {
System.out.println("key:" + key + " values:" + map.get(key));
}
// 通过map.entrySet()来遍历
Set<Entry<String, Integer>> entrys = map.entrySet();
System.out.println("通过map.entrySet()遍历:");
for (Entry<String, Integer> en : entrys) {
System.out.println("key:" + en.getKey() + " values:" + en.getValue());
}
}
}
TreeMap
import java.util.*;
public class TreeMap {
/*
* TreeMap存储Key-Value对时,需要根据Key对key-value对进行排序。
* TreeMap 可以保证所有的Key-Value都处于有序状态。
*
* TreeMap的Key的排序:
* ●自然排序: TreeMap的所有的Key必须实现Comparable接口,
* 而且所有的Key应该是同-个类的对象,否则将会抛出ClasssCastException
*
* ●定制排序(了解) :创建TreeMap.时,传入一个Comparator对象,
* 该对象负责对TreeMap中的所有key进行排序。此时不需要Map的Key实现Comparable接口
*/
public static void main(String[] args) {
// Treemap自然排序是字典排序
Map<Integer, String> map = new TreeMap<Integer, String>();
map.put(4, "a");
map.put(3, "a");
map.put(2, "a");
map.put(1, "a");
// key不可设置为空
map.put(null, "a"); // 编译成功,运行异常!!!
System.out.println(map); // 输出1=a,2=a,3=a,4=a
Map<String, String> map1 = new TreeMap<String, String>();
map1.put("b", "b");
map1.put("c", "c");
map1.put("d", "d");
map1.put("ab", "ab");
map1.put("1", "ab");
map1.put("10", "ab");
System.out.println("map1"); // 输出1=ab,10=ab,a=a,ab=ab,b=b,c=c,d=d
}
}