您的位置:首页 > 编程语言 > Java开发

Java基础学习总结(116)——Map使用相关问题总结

2017-10-14 10:26 756 查看


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();}
Java中Map相关的6大问题——每个开发人员都要注意
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获取 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: