概述
1. Map里的常见方法
Map接口用来存储成对的数据
实现类: HashMap / LinkedHashMap / TreeMap / HashTable / Properties
Map的特点:
1. 存储数据都是成对出现的,我们称之为键值对 Key-Value
2. key不允许重复,如果出现重复的key,后一个对应的value会覆盖前一个value(非绝对)
3. 存储的元素是无序的,不能通过下标来获取到元素
Map 和 Collection 这两个接口之间没有任何的继承关系
Map里的常见方法:
size(): 获取键值对的个数
containsKey(Object key): 判断 key 是否存在
containsValue(Object value): 判断value是否存在
put(K k,V v): 存入一个键值对。如果key已经存在,后一个value会覆盖前一个value
putIfAbsent(K k,V v): 存入一个键值对,如果key已经存在,后一个value不再存入
V get(K k): 根据指定的key 获取到对应的value,如果key不存在,返回 null
V getOrDefault(K k,V defaultValue): 根据key获取value,如果key存在,获取到对应的value;如果key不存在,使用默认值
remove(Object key): 根据key移除对应的键值对,返回移除的key对应的value
remove(Object key,Object value): 使用键值对来移除,只有键和值都匹配才能移除!
replace(K k,V v): 使用新的 value替换 旧的value,等价于 再次put(K k,V v)
replace(k k,V oldValue,V newValue): 找到 匹配的k和oldValue,然后使用newValue替换
public class MapDemo {
public static void main(String[] args) {
Map<String, String> heroes = new HashMap<>();
heroes.put("黑旋风", "李逵");
heroes.put("齐天大圣", "孙悟空");
// heroes.put("黑旋风", "李鬼"); key存在,后一个value会覆盖前一个
heroes.putIfAbsent("黑旋风", "李鬼"); // key存在,后一个value不会存入
heroes.put("斗战胜佛", "孙悟空");
System.out.println(heroes);
String value = heroes.get("黑旋风");
System.out.println(value);
System.out.println(heroes.get("及时雨"));
System.out.println(heroes.getOrDefault("及时雨", "宋江"));
System.out.println(heroes.getOrDefault("齐天大圣", "弼马温"));
System.out.println(heroes);
System.out.println(heroes.containsValue("孙悟空"));
/*String x = heroes.remove("黑旋风");
System.out.println(x);*/
heroes.remove("黑旋风", "李鬼");
System.out.println(heroes);
heroes.replace("黑旋风", "李鬼", "张三");
System.out.println(heroes);
}
}
2. Map遍历
Map遍历相关的方法:
values(): 获取到所有的value组成的 Collection,再使用 Collection的 迭代器来遍历
这种方式只能获取到所有的 value,不能获取到对应的 key
key是唯一的,可以通过key获取到value;但是value不唯一,不能通过value获取到对应的key
keySet(): 获取到 所有的 key组成的 Set类型的集合
entrySet(): 获取到 所有的 键值对 组成的 Set集合
public class MapIterator {
public static void main(String[] args) {
Map<String, String> heroes = new HashMap<>();
heroes.put("及时雨", "宋江");
heroes.put("黑旋风", "李逵");
heroes.put("齐天大圣", "孙悟空");
heroes.put("雷神", "索尔");
heroes.put("钢铁侠", "史塔克");
heroes.put("美国队长", "罗杰斯");
/* Map是无序的,不能通过下标获取到元素
for (int i = 0; i < heroes.size(); i++) {
System.out.println(heroes.get(i)); 把数字i当做key来查找对应的value
}*/
/*Collection<String> values = heroes.values();
for (String value : values) {
System.out.println(value);
}*/
/*Set<String> keySet = heroes.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
String k = iterator.next();
System.out.println(k + ":" + heroes.get(k));
}*/
/*for (String k : heroes.keySet()) {
System.out.println(k + ":" + heroes.get(k));
}*/
/*Set<Map.Entry<String, String>> entrySet = heroes.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}*/
for (Map.Entry<String, String> entry : heroes.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
3. Map的使用场景,统计字符串里每个字符出现的次数
public class MapTest {
public static void main(String[] args) {
String s = "dk;gkh;kj;df";
Map<Character, Integer> counts = new HashMap<>();
for (char c : s.toCharArray()) {
/*if (!counts.containsKey(c)) {
counts.put(c, 1);
} else {
counts.put(c, counts.get(c) + 1);
}*/
counts.put(c, counts.getOrDefault(c, 0) + 1);
}
System.out.println(counts);
}
}
{"d":2,"k":3, ";":3, "g":1, "h":1, "j":1}
最后
以上就是忧伤哈密瓜为你收集整理的Map里的常见方法及遍历1. Map里的常见方法2. Map遍历3. Map的使用场景,统计字符串里每个字符出现的次数的全部内容,希望文章能够帮你解决Map里的常见方法及遍历1. Map里的常见方法2. Map遍历3. Map的使用场景,统计字符串里每个字符出现的次数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复