博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨
☀️相关笔记章节:
🌹java 1.8 stream使用总结(个人总结有一些经典文章的集合)
🌹Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)
🌹List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历
当处理List和Map这两种数据结构时,有以下三种常见的遍历方式:
1. 增强for循环(Enhanced For Loop):
增强for循环是一种简化遍历的方式,适用于List
和Map。
List遍历: 遍历List中的元素,对每个元素执行操作。
for (ElementType element : list) {
// 操作element
}Map遍历: 遍历Map中的键值对,对每对键值对执行操作。
java复制代码for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// 操作key和value
}2. 迭代器(Iterator)遍历:
迭代器是一种通用的遍历方式,适用于List和Map。
List遍历: 使用迭代器遍历List中的元素,对每个元素执行操作。
java复制代码Iterator<ElementType> iterator = list.iterator();
while (iterator.hasNext()) {
ElementType element = iterator.next();
// 操作element
}Map遍历: 使用迭代器遍历Map中的键,对每个键执行操作,然后根据键获取对应的值。
java复制代码Iterator<KeyType> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
KeyType key = iterator.next();
ValueType value = map.get(key);
// 操作key和value
}3. Lambda表达式遍历(仅适用于Java 8及以上):
Lambda表达式提供一种更简洁的遍历方式,适用于List和Map。
List遍历: 使用Lambda表达式遍历List中的元素。
java复制代码list.forEach(element -> {
// 操作element
});Map遍历: 使用Lambda表达式遍历Map中的键值对。
java复制代码map.forEach((key, value) -> {
// 操作key和value
});选择合适的遍历方式取决于您的编程习惯、代码简洁性以及特定情况下的性能需求。当处理List和Map这两种数据结构时,有以下三种常见的遍历方式:
1. 增强for循环(Enhanced For Loop):
增强for循环是一种简化遍历的方式,适用于List和Map。
List遍历: 遍历List中的元素,对每个元素执行操作。
java复制代码for (ElementType element : list) {
// 操作element
}Map遍历: 遍历Map中的键值对,对每对键值对执行操作。
java复制代码for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// 操作key和value
}2. 迭代器(Iterator)遍历:
迭代器是一种通用的遍历方式,适用于List和Map。
List遍历: 使用迭代器遍历List中的元素,对每个元素执行操作。
java复制代码Iterator<ElementType> iterator = list.iterator();
while (iterator.hasNext()) {
ElementType element = iterator.next();
// 操作element
}Map遍历: 使用迭代器遍历Map中的键,对每个键执行操作,然后根据键获取对应的值。
java复制代码Iterator<KeyType> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
KeyType key = iterator.next();
ValueType value = map.get(key);
// 操作key和value
}3. Lambda表达式遍历(仅适用于Java 8及以上):
Lambda表达式提供一种更简洁的遍历方式,适用于List和Map。
List遍历: 使用Lambda表达式遍历List中的元素。
java复制代码list.forEach(element -> {
// 操作element
});Map遍历: 使用Lambda表达式遍历Map中的键值对。
java复制代码map.forEach((key, value) -> {
// 操作key和value
});选择合适的遍历方式取决于您的编程习惯、代码简洁性以及特定情况下的性能需求。
package com.example.democrud.democurd.Prototype.demo01;
import java.util.*;
public class Demo4 {
public static void main(String[] args) {
// List的三种遍历方式:
listTest();
System.out.println("------------------方法分割-----------------------");
//Map的三种遍历方式:
mapTest();
}
public static void mapTest() {
HashMap<String, String> map = new HashMap<>();
map.put("孙悟空", "老大");
map.put("猪八戒", "老三");
map.put("唐三藏", "老二");
map.put("沙悟净", "老四");
//表示将map对象的所有key值已set集合的形式返回
Set<String> set = map.keySet();
for (String s : set) {
//s就是key的值 s1是value
String s1 = map.get(s);
System.out.println("键:" + s + "- 值:" + s1);
}
System.out.println("-----------------------------");
/**
* entrySet()
将原有Map集合中的键值作为一个整体返回Set集合
再将包含键值对对象的Set集合转化为Iterator接口对象,
然后获取集合中的所有的键值对映射关系,
在从映射关系中取出键和值
*
*/
Set<Map.Entry<String, String>> set01 = map.entrySet();
for (Map.Entry<String, String> entry : set01) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println("键:" + key + "- 值:" + value);
}
System.out.println("-----------------------------");
/**
* map.entrySet().iterator();
* 首先是map.entrySet()是把HashMap类型的数据转换成集合类型;
* 然后是获得map的迭代器,用作遍历map中的每一个键值对;
* iterator()是去获得这个集合的迭代器,保存在iter里面;
*/
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
String key = next.getKey();
String value = next.getValue();
System.out.println("键:" + key + "- 值:" + value);
}
System.out.println("-----------------------------");
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
public static void listTest() {
List<String> list = new ArrayList<>();
list.add("孙悟空");
list.add("唐三藏");
list.add("猪八戒");
list.add("沙悟净");
String string = list.toString();
System.out.println(string);
System.out.println("-----------------------------");
for (String s : list) {
System.out.println(s);
}
System.out.println("-----------------------------");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
System.out.println("-----------------------------");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println(next);
}
}
}运行结果如下:
[孙悟空, 唐三藏, 猪八戒, 沙悟净]
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净
------------------方法分割-----------------------
键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
通过Map.values()遍历所有的value,但不能遍历key
value= 老大
value= 老四
value= 老三
value= 老二