Java中Map相关的6大问题——每个开发人员都要注意

时间:2022-04-29
本文章向大家介绍Java中Map相关的6大问题——每个开发人员都要注意,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

通常情况下Map是一种数据结构组成的一组键值对,Map中的key值是唯一的;Map是开发过程中经常被用到的一种数据结构,如何正确使用它,是每个Java开发人员都要掌握的,下面整理了使用Map的一引起注意事项。

网络配图 1、Map转为一个List 在Java中Map接口提供了三个集合视图:key set,value set,和key-value set;它们可以使用构造函数或addAll()方法转化为一个List,例子代码如下:

// key list
List keyList =newArrayList(map.keySet());
// value list
List valueList =newArrayList(map.values());
// key-value list
List entryList =newArrayList(map.entrySet());

2、遍历Map的方法 遍历Map是Java中最基本的操作,具体使用方法通过例子进行说明,代码如下: 第一种方法:

for(Entry entry: map.entrySet()){// 返回键值
K key = entry.getKey();//返回value值
V value = entry.getValue();}

第二种方法:

Iterator itr = map.entrySet().iterator();while(itr.hasNext()){
Entry entry = itr.next();//返回键值
K key = entry.getKey();//返回value值
V value = entry.getValue();}

网络配图 2、Map中key的操作 Map中的key也是一个用的比较多的操作,一种方法是把map.entry转换成一个List,例子代码如下:

List list =newArrayList(map.entrySet());
Collections.sort(list, newComparator(){
@Override
publicint compare(Entry e1, Entry e2)
{return e1.getKey().compareTo(e2.getKey());
}
});

另一种方法是使用SortedMap总排序,进一步提供了key,例子代码如下:

SortedMap sortedMap =newTreeMap(newComparator(){
@Override
publicint compare(K k1, K k2){
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);

3、Map中的value值 具体使用通过代码说明,例子如下:

List list =newArrayList(map.entrySet());
Collections.sort(list, newComparator(){
@Override
publicint compare(Entry e1, Entry e2){
return e1.getValue().compareTo(e2.getValue());
}
});

4、如何初始化一个static final的Map 开发过程中需要用到一个线程安全的Map时,Map就需要保持不变,实例代码如下:

public class Test {
private static final Map map;
static{
map =newHashMap();
map.put(1, "one");
map.put(2, "two");
}}
public class Test {
private static final Map map;
static{
Map aMap =newHashMap();
aMap.put(1, "one");
aMap.put(2, "two");
map =Collections.unmodifiableMap(aMap);
}
}

网络配图 5、HashMap、TreeMap和Hashtable之间的区别 Java中主要实现了三种接口:HashMap,TreeMap,Hashtable;最重要的区别是: 通过一个列表图进行说明 | HashMap | Hashtable | TreeMap ------------------------------------------------------- 迭代顺序 | 否 | 否 | 是 空键—值 | 是-是 | 否-否 | 否-是 线程安全 | 否 | 是 | 否 使用性能 | O(1) | O(1) | O(log n) 实用性 | 大量 | 大量 | 少量 6、如何创建一个空的Map 如果要求Map是不可变的,则使用Map =Collections.emptyMap(); 否则可以使用任何实现方法,例如Map =newHashMap(); 其他方法通过查API获取 。