Java中HashMap的常见用法详解
作者:强钦钦
这篇文章主要介绍了Java中HashMap的常见用法详解,HashMap是Java中的一个常用子类,它是java.util.HashMap<k,v>集合,实现了Map<k,v>接口, HashMap可以存储键值对,通过键来快速访问值,在HashMap中,键是唯一的,而值可以重复,需要的朋友可以参考下
1、常用方法示例
Map<String,Integer> map=new HashMap<>();//Map父类 map.put("zhangsan", 10); map.put("lisa", 20); map.put("wangwu", 50); System.out.println(map.get("lisi")); System.out.println(map.remove("lisi")); System.out.println(map.size()); System.out.println(map.isEmpty()); System.out.println(map.containsKey("tulun")); System.out.println(map.containsValue(50)); //返回Map中所包含的键值对(<String,Integer>)所组成的Set集合,每个集合元素都是Map.Entry()对象,其中Entry是Map的内部类 Set<Map.Entry<String,Integer>> entries=map.entrySet(); //Set属于Collection,而Collection含有Iterator方法 Iterator<Map.Entry<String,Integer>> iterator=entries.iterator(); while(iterator.hasNext()) { Map.Entry<String,Integer> next=iterator.next(); System.out.println(next.getKey()+"::"+next.getValue()); }
2、3种遍历方式
Map集合没有迭代器(iterator()),遍历集合中的元素可以用以下三种方法:
keySet()
- 使用Map集合中的keySet()方法,把Map集合 所有的key取出来 存储到一个Set集合中
- 遍历set集合,获取Map中的每一个key
- 通过Map集合中的方法get(key),通过key找到value
entrySet()
- 使用Map集合中的entrySet()方法,把Map集合中 多个Entry对象取出来 存储到一个Set集合中
- 遍历set集合,获取每一个Entry对象
- 使用**Entry对象中的getKey()和getValue()**方法获取键和值
values()
Map<String, String> map = new HashMap<>(); map.put("张三", "123456"); map.put("李四", "456321"); map.put("王五", "741852"); map.put("赵六", "963321"); //遍历方式1: 将map中的key的部分, 单独取出, 成为set, 遍历这个set Set<String> set = map.keySet(); //使用迭代器Iterator遍历Set集合 Iterator<String> it = set.iterator(); while (it.hasNext()) { String key = it.next(); String value = map.get(key); System.out.println(key + "=" + value); } // //使用forEach();遍历Set集合 // for (String key : set) { // String value = map.get(key); // System.out.println(key + "=" + value); // } // System.out.println(); //遍历方式2: entrySet 键值对封装成一个整体-Entry, Set<Entry> Set< Map.Entry<String, String> > set1 = map.entrySet(); // HashMap源码1005行 for (Map.Entry<String, String> en : set1) { String key = en.getKey(); String value = en.getValue(); System.out.println(key + "=" + value); } System.out.println(); // 遍历方式3: 所有的值存储到一个Collection集合中返回 // 弊端: 就只能遍历值, 不能遍历键, 因为map不能反向映射 Collection<String> values = map.values(); for (String value : values) { System.out.println(value); }
3、定义的时候初始化
private static Map<Character, Integer> map = new HashMap<Character, Integer>(){{ put('0', 0); put('1', 1); put('2', 2); put('3', 3); put('4', 4); put('5', 5); put('6', 6); put('7', 7); put('8', 8); put('9', 9); put('A', 10); put('B', 11); put('C', 12); put('D', 13); put('E', 14); put('F', 15); }};
4、getOrDefault(Object key, V defaultValue)
当Map集合中有这个key时,就使用这个key值;
如果没有,就使用默认值defaultValue。
代码示例如下:
HashMap<String, String> map1 = new HashMap<>(); map1.put("name", "cookie"); map1.put("age", "18"); map1.put("sex", "女"); String name = map1.getOrDefault("name", "random"); System.out.println(name);// cookie,map中存在name,获得name对应的value String score = map1.getOrDefault("score", "80"); System.out.println(score);// 80,map中不存在score,使用默认值80
5、putIfAbsent(K key, V value)
先判断指定的键(key)是否存在。不存在 则将 键/值对 插入到 HashMap 中。
public static void main(String[] args) { // putIfAbsent() 方法会先判断指定的键(key)是否存在。若不存在 则将键/值对插入到 HashMap 中。 HashMap<Integer, String> sites = new HashMap<>(); // 往 HashMap 添加一些元素 sites.put(1, "Google"); sites.put(2, "Runoob"); sites.put(3, "Taobao"); System.out.println("sites HashMap: " + sites); //sites HashMap: {1=Google, 2=Runoob, 3=Taobao} // HashMap 不存在该key sites.putIfAbsent(4, "Weibo"); // HashMap 中 存在 Key,所以 不会执行插入操作 sites.putIfAbsent(2, "Wiki"); System.out.println("Updated Languages: " + sites);//Updated Languages: {1=Google, 2=Runoob, 3=Taobao, 4=Weibo} }
到此这篇关于Java中HashMap的常见用法详解的文章就介绍到这了,更多相关HashMap用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!