1.getOrDefault()
方法 | 描述 |
---|---|
getOrDefault(Object key, V defaultValue) | 返回该键对应的值,如果没有该键则返回默认值defaultValue |
Map<Character,Integer> map = new HashMap<Character,Integer>();
map.put('a',1);
Integer a = map.getOrDefault('a', 1);
Integer d = map.getOrDefault('d', 100);
System.out.println("键a的Value值为="+a);
System.out.println("键d的Value值为= 因为键d不存在应该返回默认值"+d);
结果:
2.利用练习
题目一:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
public class Demo3 {
public static void main(String[] args) {
String str = "dddccdbbacdf";
int i = firstUniqChar(str);
System.out.println(i);
}
public static int firstUniqChar(String s) {
if(s == null || s.length == 0){
return -1;
}
HashMap<Character, Integer> count = new HashMap<Character, Integer>();
int n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
count.put(c, count.getOrDefault(c, 0) + 1);
}
//并不是遍历map判断元素个数是不是一,而是遍历字符串判断元素个数是否为一
for (int i = 0; i < n; i++) {
if (count.get(s.charAt(i)) == 1)
return i;
}
return -1;
}
}
结果:
题目二:统计一个数组中各个字母出现的次数
public class Demo9 {
public static void main(String[] args) {
String str = "dfasasdfassfdsfdgrhtjh";
Map<Character, Integer> map = checkNumber(str);
print(map);
}
//输出
private static void print(Map<Character, Integer> map) {
Set<Character> characters = map.keySet();
for (Character character : characters) {
System.out.print("字符:"+character+" ");
System.out.println("出现的次数"+map.get(character));
}
}
private static Map<Character,Integer> checkNumber(String str) {
HashMap<Character, Integer> map = new HashMap<>();
//字符串变成字符数组
char[] chars = str.toCharArray();
//遍历字符数组将其填入map
for (int i = 0; i < chars.length; i++) {
//已经有的元素,元素数量再加一。如果是第一次填入,元素个数加一。
map.put(chars[i],map.getOrDefault(chars[i],0)+1);
}
return map;
}
}
结果: