一、基本介绍
Java中的Map是一种常用的数据结构,是一种key-value形式的数据结构,其中key不可重复,value可以重复。Map中提供了多种初始化赋值的方式,包括常见的基于HashMap及TreeMap的初始化赋值,也可以使用块初始化方式、匿名内部类等多种方式进行初始化赋值。
二、基于HashMap的初始化赋值
HashMap是Java中最常用的Map实现类。
Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3);
上述代码通过put方法向Map中添加键值对,并实现了对Map的初始化赋值。需要注意的是,当向Map中添加键值对时,如果该key已经存在,则会将原来的value值覆盖。因此,在添加时需要注意key的唯一性。
三、基于TreeMap的初始化赋值
TreeMap是Java中另一种常见的Map实现类,其主要特点是按照key的自然顺序排序,并且支持自定义比较器。
Map<String, Integer> map = new TreeMap<>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3);
上述代码同样实现了对Map的初始化赋值。不同的是,在TreeMap中,key会按照自然排序进行排列。为了实现key的自定义排序,可以使用Comparator进行自定义比较器的指定。
四、块初始化赋值
块初始化赋值指的是在初始化Map时,直接使用花括号进行键值对的赋值。
Map<String, Integer> map = new HashMap<>() {{ put("apple", 1); put("banana", 2); put("orange", 3); }};
上述代码利用双花括号实现了Map的块初始化操作。需要注意的是,这种方式会创建一个匿名内部类,并在其中添加初始值。虽然这种方式在代码上略显冗长,但实际使用中可以极大地提升代码的可读性。
五、匿名内部类初始化赋值
匿名内部类初始化赋值与块初始化赋值相似,也是利用双花括号创建一个匿名内部类进行初始化赋值。
Map<String, Integer> map = new HashMap<>() {{ { put("apple", 1); put("banana", 2); put("orange", 3); } }};
上述代码与块初始化赋值相似,只是将添加键值对的操作放在了匿名内部类的构造器中。这种方式在代码上看起来更为简洁,但仍然需要注意在实现时需要正确使用双花括号及匿名内部类的语法。