Java8新特性之使用forEach遍历List and Map

第一遍历Map集合

以往会使用增强for语法来遍历如:

public static void main(String[] args) {
        Map<String, Integer> items = new HashMap<>();
        items.put("A", 10);
        items.put("B", 20);
        items.put("C", 30);
        items.put("D", 40);
        items.put("E", 50);
        items.put("F", 60);
        for (Entry<String, Integer> entry : items.entrySet()) {
            System.out.println(entry.getKey() + " : "  + entry.getValue());
        }
    }<br>在控制台输出:<br>A : 10
B : 20
C : 30
D : 40
E : 50
F : 60

其中使用Java8 forEach + lambda表达式来循环一个列表如下:

public static void main(String[] args) {
        Map<String, Integer> items = new HashMap<>();
        items.put("A", 10);
        items.put("B", 20);
        items.put("C", 30);
        items.put("D", 40);
        items.put("E", 50);
        items.put("F", 60);
        items.forEach((k,v) -> {
            System.out.println(k + ":" + v);
            if("E".equals(k)){
                System.out.println("Hello E");
            }
        });
    }<br>打印结果为:<br>A:10
B:20
C:30
D:40
E:50
Hello E
F:60

其中forEach方法接收的参数的源码如下:
在这里插入图片描述


第二遍历List集合:

public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("A");
        items.add("B");
        items.add("C");
        items.add("D");
        items.add("E");
 
        for (String item : items) {
            System.out.println(item);
        }      
    }<br>打印结果如下:<br>A
B
C
D

其中使用java8 forEach+lambda表达式来实现如下:

public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("A");
        items.add("B");
        items.add("C");
        items.add("D");
        items.add("E");
 
        //lambda
        //Output : A,B,C,D,E
        items.forEach(item->System.out.println(item));
             
        //Output : C
        items.forEach(item->{
            if("C".equals(item)){
                System.out.println(item);
            }
        });
         
    }<br>打印结果如下:<br>A
B
C
D
E
C

其中forEach方法接收的参数的源码如下:

在这里插入图片描述

也可以使用System.out::println来输出:System.out::println这段代码其实就是Consumer接口的一个实现方式:

public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("A");
        items.add("B");
        items.add("C");
        items.add("D");
        items.add("E");
        items.forEach(System.out::println); // 是items.forEach(item -> {
                System.out.println(item)
     })这个用法的缩写形式
}       
Map<String, Integer> items = new HashMap<>();
	items.put("A", 10);
	items.put("B", 20);
	items.put("C", 30);
	items.put("D", 40);
	items.put("E", 50);
	items.put("F", 60);

	for (Map.Entry<String, Integer> entry : items.entrySet()) {
		System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue());
	}



Java8 forEach遍历List< Map> 数据

   public void query() {
        UserDao userDao = new UserDao();
        ColumnHolder sqlColumn = ColumnHolder.of()
                .addColumn("id","1")
                .addColumn("passwd","654321");
        List<Map<String, Object>> result = userDao.query(sqlColumn);
        //输出List集合中Map数据
        result.stream()
                .forEach(map->
                        map.forEach((key,val)->
                                System.out.println("name: "+key+" "+"value:"+val)));
    }

版权声明:本文为qq_33735635原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。