HashMap
Hash -- Hash算法根据key计算hash函数来存放数据、处理冲突(链地址法-红黑二叉树) => 无序存储,重复丢弃
Map -- 键值对<key, value>中key是唯一的,作为value的索引
基本操作
public class Map {
public static void main(String[] args) {
//TODO Collection HashMap
//HashMap = Hash(Hash算法) + Map(键值对)
//由于Hash算法的特性 => 无序存储,重复丢弃
//Hash算法根据key计算索引 -- 判断是否相同
HashMap<String,String> map = new HashMap<String,String>();
//TODO .put() 添加数据
map.put("hihi","A");
map.put("hehe","B");
map.put("hoho","C");
map.put("haha","D");
map.put("haha","D");
//key值相同value相同,重复数据丢弃
System.out.println(map.put("haha", "W"));
//key值相同value不同,覆盖value值,返回旧值
//TODO .putIfAbsent() 只添加数据,相同的key不进行覆盖
System.out.println(map.putIfAbsent("haha", "I"));
//添加失败,返回对应key值已有数据的value
//TODO .get() 查询数据
//传入key返回value
System.out.println(map.get("haha"));
//TODO .replace() 修改数据
System.out.println(map.replace("hehe", "Q"));//返回旧value
System.out.println(map.replace("tttt", "Q"));//key值不存在返回null
//TODO .clear() 清空数据
//TODO .keySet() 获取所有的key,返回Set集合 => 数据不能重复
Set set = map.keySet();
System.out.println(set);
//根据key集合遍历打印所有value
for (Object o : set) {
System.out.println(map.get(o));
}
//TODO .values() 获取所有value,返回Collection集合 => 数据可重复
Collection values = map.values();
for (Object value : values) {
System.out.println(value);
}
//TODO .containsKey() 判断是否存在指定key
System.out.println(map.containsKey("haha"));
//TODO .containsValue() 判断是否存在指定value
System.out.println(map.containsValue("A"));
//TODO .entrySet() 获取键值对对象 Entry -- 内部接口类
Set<java.util.Map.Entry<String, String>> entries = map.entrySet();
//整体打印 -- 数组形式
System.out.println(entries);
//遍历打印 -- .getKey() .getValue() 获取每一个对象的key和value
for (java.util.Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
//TODO .remove() 删除数据 传入key值删除整个键值对
System.out.println(map.remove("hehe")); //返回删除键值对的value
//传入key+value 删除键值对的key和value必须都符合参数 成功返回true 失败返回false
System.out.println(map.remove("haha", "a"));
System.out.println(map);
}
}
标签:map,HashMap,System,value,println,key,集合,out
From: https://www.cnblogs.com/Ashen-/p/17024078.html