Java集合--HashMap

Java集合–HashMap

  1. 简介

    HashMap是Java集合的一种,实现了Map接口,使用频率非常高。

    HashMap中存储的是Entry<>键值对<key,value>,key与value一一对应,在Map中Key值是唯一的,但value值可以有重复。

    HashMap的特点有:

    • 允许空键和空值(但空健只能有一个,且放在第一位)
    • 元素是无序的,而且输出顺序和存放顺序不一样
    • key值不能重复
    • 底层的实现是数组+链表,JDK8后又加了红黑树,链表长度达到8之后变成红黑树
    • 可以在o(1)时间定位到要查询的数据
    • 同一时间内可以有多个线程同时读写,所以是线程不安全的

  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"
    

  1. 遍历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());
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值