[Java]Map/HashMap迭代时,获取下标Index,传统和lamda做法

2021-09-30 1483点热度 0人点赞 0条评论

在迭代Map/HashMap/LinkedHashMap的时候,可能会需要使用到当前迭代的下标(index)

传统的方式可能是这样做的,在外层加一个计数器

LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
map.put(100, "name1");
map.put(200, "name2");

//迭代key,value
int index = 0; // 计数器
for (Integer key : map.keySet()) {
    index++;
    System.out.println("key: "+key+", value: "+map.get(key));
}

Java8以上可以做的更加优雅简捷一些:

LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
map.put(100, "name1");
map.put(200, "name2");

AtomicInteger indexAtomic = new AtomicInteger(0);
map.forEach((key, value) -> {
    int index = indexAtomic.getAndIncrement(); //index从0开始
    System.out.println("index: " + index + ", key: " + key + ", value: " + value);
});

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论