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获取 。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Java常犯错误top10

1. 数组转ArrayList 为了实现把一个数组转换成一个ArrayList,很多java程序员会使用如下的代码: List<String> list = A...

3747
来自专栏WD学习记录

Leetcode Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

1122
来自专栏Java帮帮-微信公众号-技术文章全总结

第十八天 集合-泛型&list接口&set接口【面试+工作】

泛型的使用:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。

1152
来自专栏云霄雨霁

Java--集合类之Collection与Map

2318
来自专栏余林丰

有关LinkedList常用方法的源码解析

jdk1.7.0_79   上文里解析了有关ArrayList中的几个常用方法的源码——《有关ArrayList常用方法的源码解析》,本文将对LinkedLi...

26910
来自专栏架构之路

Java 集合系列02之 Collection架构

概要 首先,我们对Collection进行说明。下面先看看Collection的一些框架类的关系图: ? Collection是一个接口,它主要的两个分支是:L...

3574
来自专栏Danny的专栏

Java基础——Map接口

  通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的。下面就以K和V来代表键和值,来说明一下java中关于Map的几个问题。

1002
来自专栏尾尾部落

[算法总结] 一文搞懂面试链表题

链表是面试过程中经常被问到的,这里把剑指offer 和 LeetCode 中的相关题目做一个汇总,方便复习。

1181
来自专栏郭耀华‘s Blog

Java集合框架(三)—— List、ArrayList、Vector、Stack

List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引。List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象。 ...

3095
来自专栏机器学习入门

LWC 54:697. Degree of an Array

LWC 54:697. Degree of an Array 传送门:697. Degree of an Array Problem: Given a non...

1947

扫码关注云+社区

领取腾讯云代金券