前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中Map相关的6大问题——每个开发人员都要注意

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

作者头像
用户1289394
发布2018-02-27 15:15:41
6580
发布2018-02-27 15:15:41
举报
文章被收录于专栏:Java学习网

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

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

代码语言:js
复制
// 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中最基本的操作,具体使用方法通过例子进行说明,代码如下: 第一种方法:

代码语言:js
复制
for(Entry entry: map.entrySet()){// 返回键值
K key = entry.getKey();//返回value值
V value = entry.getValue();}

第二种方法:

代码语言:js
复制
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,例子代码如下:

代码语言:js
复制
List list =newArrayList(map.entrySet());
Collections.sort(list, newComparator(){
@Override
publicint compare(Entry e1, Entry e2)
{return e1.getKey().compareTo(e2.getKey());
}
});

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

代码语言:js
复制
SortedMap sortedMap =newTreeMap(newComparator(){
@Override
publicint compare(K k1, K k2){
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);

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

代码语言:js
复制
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就需要保持不变,实例代码如下:

代码语言:js
复制
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获取 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档