Java中map.getOrDefault()方法的使用
Map.getOrDefault(Object key, V defaultValue)方法的作用是:
  当Map集合中有这个key时,就使用这个key值;
  如果没有就使用默认值defaultValue。

代码示例如下: 

HashMap<String, String> map = new HashMap<>();
	map.put("name", "cookie");
	map.put("age", "18");
	map.put("sex", "女");
	String name = map.getOrDefault("name", "random");
	System.out.println(name);// cookie,map中存在name,获得name对应的value
	int score = map.getOrDefault("score", 80);
	System.out.println(score);// 80,map中不存在score,使用默认值80
class Solution {
    public char firstUniqChar(String s) {
        Map<Character, Integer> map = new HashMap<>();
        for(int i = 0;i < s.length();i++){
            map.put(s.charAt(i),map.getOrDefault(s.charAt(i), 0)+1); //没有的时候默认0,有的时候直接取出来
        }
        for(int i = 0;i < s.length();i++){
            if(map.get(s.charAt(i)) == 1){
                return s.charAt(i);
            }
        }
        return ' ';
    }
}

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

基本类型对应的包装类表如下:

基本类型

引用类型

boolean

Boolean

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

添加元素

HashMap 类提供类很多有用的方法,添加键值对(key-value)可以使用 put() 方法:

访问元素

我们可以使用 get(key) 方法来获取 key 对应的 value:

删除元素

我们可以使用 remove(key) 方法来删除 key 对应的键值对(key-value):删除所有键值对(key-value)可以使用 clear 方法:

计算大小

如果要计算 HashMap 中的元素数量可以使用 size() 方法:

迭代 HashMap

可以使用 for-each 来迭代 HashMap 中的元素。

如果你只想获取 key,可以使用 keySet() 方法,然后可以通过 get(key) 获取对应的 value,如果你只想获取 value,可以使用 values() 方法。

Java HashMap 方法

hashmap

Java HashMap 常用方法列表如下:

方法

描述

clear()

删除 hashMap 中的所有键/值对

clone()

复制一份 hashMap

isEmpty()

判断 hashMap 是否为空

size()

计算 hashMap 中键/值对的数量

put()

将键/值对添加到 hashMap 中

putAll()

将所有键/值对添加到 hashMap 中

putIfAbsent()

如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。

remove()

删除 hashMap 中指定键 key 的映射关系

containsKey()

检查 hashMap 中是否存在指定的 key 对应的映射关系。

containsValue()

检查 hashMap 中是否存在指定的 value 对应的映射关系。

replace()

替换 hashMap 中是指定的 key 对应的 value。

replaceAll()

将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。

get()

获取指定 key 对应对 value

getOrDefault()

获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值

forEach()

对 hashMap 中的每个映射执行指定的操作。

entrySet()

返回 hashMap 中所有映射项的集合集合视图。

keySet()

返回 hashMap 中所有 key 组成的集合视图。

values()

返回 hashMap 中存在的所有 value 值。

merge()

添加键值对到 hashMap 中

compute()

对 hashMap 中指定 key 的值进行重新计算

computeIfAbsent()

对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中

computeIfPresent()

对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。

class Solution {
    public char firstUniqChar(String s) {
        int[] count = new int[26];
        char[] chars = s.toCharArray();
        for(char c : chars){
            count[c-'a']++;
        }
        for(char c : chars){
            if(count[c-'a'] == 1){
                return c;
            }
        }
        return ' ';
    }
}