Java集合–HashMap
-
简介
HashMap是Java集合的一种,实现了Map接口,使用频率非常高。
HashMap中存储的是Entry<>键值对<key,value>,key与value一一对应,在Map中Key值是唯一的,但value值可以有重复。
HashMap的特点有:
- 允许空键和空值(但空健只能有一个,且放在第一位)
- 元素是无序的,而且输出顺序和存放顺序不一样
- key值不能重复
- 底层的实现是数组+链表,JDK8后又加了红黑树,链表长度达到8之后变成红黑树
- 可以在o(1)时间定位到要查询的数据
- 同一时间内可以有多个线程同时读写,所以是线程不安全的
- 常用方法
-
创建
HashMap<Integer,String> map = new HashMap<>(); Map<String,String> map1 = new HashMap<>(); -
添加元素:put()
map.put(1,"one"); -
取出元素:get()
String val = map.get(1); // "one" String val2 = map.get(5); // null -
判断为空:isEmpty()
map.isEmpty(); // false -
判断是否含有key:containsKey(key)
map.containsKey(2); // false -
判断是否含有value:containsValue(value)
map.containsValue("one"); // true -
删除key对应的值:remove(key)
String str = map.remove(1); // "one" -
删除键值对:remove(key,value)
map.remove(1,"two"); // 键值对不存在时,返回false map.remove(1,"one"); // 键值对存在时,删除并返回true -
HashMap中元素的个数
map.size(); -
显示所有的value:values()
map.values(); // [] -
显示所有的key:keySet()
map.keySet(); // [] -
显示所有的key和value:entrySet()
map.entrySet(); // [key1=value1] -
替换key对应的value:replace(key,new_value) (Java8)
map.replace(key,new_value); // old_value -
将同一类型的map添加到另一个map中:putAll(map)
map.putAll(map1); -
克隆:clone()
Object clo = map.clone(); // clo = map -
清空:clear()
map.clear(); -
若key不存在或其value值为null,则执行put,否则不执行:putIfAbsent(key,value)(java8)
map.putIfAbsent(1,"new_one"); // [1,"one"]存在,不执行put map.putIfAbsent(3,"three"); -
根据条件设置value:compute(key, 条件?A:B)(java8)
map.compute(1,<k,v>->v==null?"one":"two"); //当键1对应的value为null时,将其设为"one",否则设为"two"
- 遍历HashMap
- 通过
entrySet()创建一个迭代器。
Iterator it = mp.entrySet().iterator(); //iterator迭代器
while (it.hasNext()) { // hasNext(),迭代器不为空
Map.Entry pairs = (Map.Entry)it.next(); // next(),返回下一个(key,value)
System.out.println(pairs.getKey() + " = " + pairs.getValue());
}
- 直接利用for-each循环。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) { //Map.Entry对象与 // entrySet()
System.out.println("Key = " + entry.getKey() + ", Value = " +
entry.getValue());
}
HashMap是Java集合中的一个重要成员,实现了Map接口。它以键值对形式存储数据,键唯一,支持空键但不允许键重复。HashMap的特点包括无序性、线程不安全以及高效的o(1)查找速度。其内部实现基于数组+链表,JDK8后引入红黑树优化。常用操作包括put()、get()、remove()等,Java8还提供了新的方法如putIfAbsent()和compute()。遍历HashMap可以通过迭代器或for-each循环实现。
1291

被折叠的 条评论
为什么被折叠?



