版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Java Map遍历的六种方式
目录
1、map.keySet()取得key的set集合,foreach遍历
2、map.keySet()取得key的set集合,Iterator游标迭代
3、map.entrySet()方法把map转成Set,foreach遍历
4、map.entrySet()方法把map转成Set,Iterator遍历
1、map.keySet()取得key的set集合,foreach遍历
public static void f1() {
for(String key : map.keySet()) {
System.out.println(key+"\t"+map.get(key));
}
}
2、map.keySet()取得key的set集合,Iterator游标迭代
public static void f2() {
Iterator<String> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key+"\t"+map.get(key));
}
}
3、map.entrySet()方法把map转成Set,foreach遍历
public static void f3() {
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for(Map.Entry<String, Integer> set : entrySet) {
System.out.println(set.getKey()+"\t"+set.getValue());
}
}
4、map.entrySet()方法把map转成Set,Iterator遍历
public static void f4() {
Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
}
5、map.forEach + 函数式编程
public static void f5() {
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String t, Integer u) {
System.out.println(t+"\t"+u);
}
});
}
6、map.forEach + lambda 表达式
public static void f6() {
map.forEach((key,value)->System.out.println(key+"\t"+value));
}
全部代码
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.function.BiConsumer;
public class MainTest {
// private static Map<String, Integer> map = new HashMap<String, Integer>();// 无序的
private static Map<String, Integer> map = new TreeMap<String, Integer>();// 有序的
static {
for(int i = 0 ; i < 10 ; i++) {
map.put("key"+i, i);
}
}
public static void main(String[] args) {
f1();
// f2();
// f3();
// f4();
// f5();
// f6();
}
// 1、map.keySet()取得key的set集合,foreach遍历
public static void f1() {
for(String key : map.keySet()) {
System.out.println(key+"\t"+map.get(key));
}
}
// 2、map.keySet()取得key的set集合,Iterator游标迭代
public static void f2() {
Iterator<String> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key+"\t"+map.get(key));
}
}
// 3、map.entrySet()方法把map转成Set,foreach遍历
public static void f3() {
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for(Map.Entry<String, Integer> set : entrySet) {
System.out.println(set.getKey()+"\t"+set.getValue());
}
}
// 4、map.entrySet()方法把map转成Set,Iterator遍历
public static void f4() {
Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
}
// 5、map.forEach + 函数式编程
public static void f5() {
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String t, Integer u) {
System.out.println(t+"\t"+u);
}
});
}
// 6、map.forEach + lambda 表达式
public static void f6() {
map.forEach((key,value)->System.out.println(key+"\t"+value));
}
}
运行结果
总结
其实Map的遍历方式不多,仔细想想只有5种遍历方式(map.forEach只算一种)
1、map.keyset()方法返回key的set集合,分别用foreach循环和Iterator迭代有两种方法
2、map.entrySet()方法返回具有key和value的Map.EntrySet<K,V>集合,foreach和Iterator遍历同样也有两种方法
3、map.forEach()方法,匿名内部类方法和Lambda函数输出分别有两种方法(map.forEach严格来说只能算一种了)