Map结构是一个键值对结构形式的集合,在平时的使用中也很常见,历史文章数据很早就写过使用map并发控制进行业务场景的处理,翻看历史文章就可找到。
这次主要以代码示例的方式进行介绍一下如何使用合理的方式进行处理map的键和值数据的。
进行map数据的模拟
Map map = new HashMap<>(16, 0.75f);
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
第一种方式获取键值对集合entrySet,分别获取key,value
log.debug("获取键值对集合,分别获取key,value");
for (Map.Entry entry : map.entrySet()) {
log.info("map键:[{}],map值:[{}]", entry.getKey(), entry.getValue());
}
第二种方式获取键集合,然后循环遍历key,本次使用了2种方式进行遍历推荐第二种方式,简单。
log.debug("获取键集合,然后循环遍历key,本次使用了2种方式进行遍历推荐第二种方式,简单");
for (String key : map.keySet()) {
log.info("map-key:[{}]", key);
}
map.keySet().forEach(x -> {
log.info("map-key-for-each:[{}]", x);
});
第三种方式获取值集合,然后循环遍历value,本地使用了2种方式进行遍历,推荐第一种方式,简单。
log.debug("获取值集合,然后循环遍历value,本地使用了2中方式进行遍历,推荐第一种方式,简单");
Collection values = map.values();
values.stream().forEach(x -> log.info("map-value:[{}]", x));
for (Integer value : map.values()
) {
log.info("map-value-for:[{}]", value);
}
第四种方式获取迭代器,效率不高,不推荐使用。
log.debug("获取迭代器iterator然后根据迭代器进行获取key,value");
Iterator> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry entry = entryIterator.next();
log.info("map键:[{}],map值:[{}]", entry.getKey(), entry.getValue());
}
log.debug("先获取key键集合,循环遍历key,根据key获取value");
Set keySet = map.keySet();
keySet.forEach(k -> {
log.info("map键:[{}],map值:[{}]", k, map.get(k));
});
for (String key : keySet
) {
log.info("map-for map键:[{}],map值:[{}]", key, map.getOrDefault(key, null));
}
以上就是目前自己总结的如何遍历map键值对数据的四种方式,推荐使用entrySet进行获取,这样的效率更高,可以增加数据集进行模拟一下。
最后给你们简单使用一下java8方式进行map数据的遍历输出。
log.debug("使用java8提供的方法进行遍历一下");
map.forEach((key, value) -> {
log.info("map键:[{}],map值:[{}]", key, value);
});
要分享的内容到这里就结束了,希望可以帮助到你,喜欢我文章的可以点击关注给个在看呗。