前言
最近几天看了几篇有关于Java Map的外国博文,写得非常不错,所以整理了Java map 应该掌握的8个问题,都是日常开发司空见惯的问题,希望对大家有帮助;如果有不正确的地方,欢迎提出,万分感谢哈~
1、如何把一个Map转化为List
日常开发中,我们经常遇到这种场景,把一个Map转化为List。map转List有以下三种转化方式:
- 把map的键key转化为list
- 把map的值value转化为list
- 把map的键值key-value转化为list
伪代码如下:
// key list
List keyList = new ArrayList(map.keySet());
// value list
List valueList = new ArrayList(map.values());
// key-value list
List entryList = new ArrayList(map.entrySet());
示例代码:
public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(2, "java");
map.put(1, "HTML");
map.put(3, "CSS");
//把一个map的键转化为list
List<Integer> keyList = new ArrayList<>(map.keySet());
System.out.println(keyList);
//把map的值转化为list
List<String> valueList = new ArrayList<>(map.values());
System.out.println(valueList);
把map的键值转化为list
List entryList = new ArrayList(map.entrySet());
System.out.println(entryList);
}
}
运行结果:
[1, 2, 3]
[java, HTML, CSS]
[1=java, 2=HTML, 3=CSS]
2、如何遍历一个Map
我们经常需要遍历一个map,可以有以下两种方式实现:
通过entrySet+for实现遍历
for(Entry entry: map.entrySet()) {
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
实例代码:
public class EntryMapTest {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(2, "java");
map.put(1, "HTML");
map.put(3, "CSS");
for(Map.Entry entry: map.entrySet()) {
// get key
Integer key = (Integer) entry.getKey();
// get value
String value = (String) entry.getValue();
System.out.println("key:"+key+",value:"+value);
}
}
}
通过Iterator+while实现遍历
Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Entry entry = itr.next();
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
实例代码:
public class IteratorMapTest {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(2, "java");
map.put(1, "HTML");
map.put(3, "CSS");
Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Map.Entry entry = (Map.Entry) itr.next();
// get key
Integer key = (Integer) entry.getKey();
// get value