Map是Java中非常实用的数据结构之一,它可以让我们以键-值(key-value)形式存储和访问数据。其中的get()方法是获取指定键对应的值的方法之一,在Java编程中使用非常广泛,下面将从多个方面对其进行详细阐述。
一、map.get方法
map.get()方法是Java Map接口的一部分,它用于获取指定键所对应的值。其函数原型如下:
V get(Object key)
其中,V是Map存储的值的类型,而key则是Map存储的键的类型。
二、map.get方法转换成list
有时候我们需要将Map中的数据转换成List类型的数据,这时可以使用如下方式:
List<V> valueList = new ArrayList<>(map.values());
该方法利用map.values()返回一个Collection对象,再通过ArrayList构造函数将其转换成List。
三、map.get方法获取值
如果想获取Map中所有的值,可以使用如下代码:
Collection<V> values = map.values();
这个方法没有返回值,而是将Map中所有的值存放在了一个Collection对象中。
四、map.get(key)为空的情况
允许key为null的Map对象当使用map.get(key)方法时,判断key是否为空是必要的,否则就会报空指针异常错误。需要注意的是,这时如果Map中没有对应的键值则该方法将会返回null,所以不能根据null判断是否成功获取了对应的值。
五、map.get(key)返回指定键的值
map.get(key)会返回Map中指定键所对应的值,如果Map中没有对应的键值,则返回null。
V value = map.get(key);
其中,key是要查找的键。
六、map.get()方法
如果我们调用map.get()而没有传递参数,那么它会返回Map中的所有键值对。如下所示:
Map<K, V> map = new HashMap<>();
//添加键值对
map.put(key1, value1);
map.put(key2, value2);
//获取所有键值对
Map<K, V> allEntries = map.get();
七、map.get(null)
虽然在Java中允许使用null作为对象的键,但是一般来说我们不应该在Map中使用null作为键。因为如果在Map中使用null作为键,那么使用get方法时会抛出NullPointerException异常。但是,如果Map中有一个值为null的键,那么仍然可以使用map.get(null)方法来获取值为null的键。
八、map.get报空指针异常的解决方法:map.getOrDefault
如果我们调用map.get()方法时,未传入任何参数,那么它会返回Map中的所有键值对。如果Map中不存在任何键值对,则会返回一个空的Map对象。
但是,如果我们调用map.get()方法并传入了一个不存在的键,那么它会返回null,而如果在程序中没有进行相应的判断和处理,那么就会抛出NullPointerException异常。
为了避免这种情况的发生,我们可以使用Map的getOrDefault()方法来代替map.get()方法。该方法会返回指定键所对应的值,如果不存在该键,则返回指定的默认值。其函数原型如下:
V getOrDefault(Object key, V defaultValue)
其中,key是要查找的键,defaultValue是当key不存在时返回的默认值。
代码示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
//创建一个Map对象
Map<String, String> map = new HashMap<>();
//添加一些键值对
map.put("name", "张三");
map.put("age", "20");
map.put("gender", "男");
//获取指定键所对应的值
String name = map.get("name");
String age = map.get("age");
String gender = map.get("gender");
//将Map中的数据转化为List类型
List<String> values = new ArrayList<>(map.values());
//获取所有键值对
Map<String, String> allEntries = map.get();
//获取含有null键的值
String nullValue = map.get(null);
//使用getOrDefault方法
String defaultValue = map.getOrDefault("phone", "未知");
//输出结果
System.out.println("name:" + name);
System.out.println("age:" + age);
System.out.println("gender:" + gender);
System.out.println("values:" + values);
System.out.println("allEntries:" + allEntries);
System.out.println("nullValue:" + nullValue);
System.out.println("defaultValue:" + defaultValue);
}
}