package test;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Created by zyq on 2020/7/6.
 */
@Slf4j
public class BaseLambda {

    public static void testForeach(){
        //定义一个数组
        String[] array={"AA","BB","CC","DD","EE","FF"};
        //将数组转换成集合
        List<String> list = Arrays.asList(array);
        //传统的遍历方式
        log.info("========传统的遍历方式:");
        for(String obj :list){
            log.info("========传统的遍历方式:"+obj);
        }
        // 使用 Lambda 表达式以及函数操作(functional operation)
        log.info("============使用 Lambda 表达式以及函数操作(functional operation)");
        list.forEach((obj)->log.info(obj));

        log.info("============使用双冒号操作符");
        list.forEach(log::info);
        list.forEach(System.out::println);


    }

    /**
     * Stream 去重复
     * String 和 Integer 可以使用该方法去重
     */
    public static void testStreamDuplicates(){

        //定义一个数组
        String[] array={"AA","BB","CC","DD","EE","FF","AA","BB","CC","DD","EE","FF"};
        // 转换成集合
        List<String> list = Arrays.asList(array);
        //Stream去重复
        List<String> collect = list.stream().distinct().collect(Collectors.toList());
        collect.forEach(log::info);


    }

    public static void main(String[] args) {
        testForeach();
        //testStreamDuplicates();
    }


}



 

运行testForeach()方法:

11:35:32.611 [main] INFO test.BaseLambda - ========传统的遍历方式:
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:AA
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:BB
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:DD
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:CC
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:EE
11:35:32.615 [main] INFO test.BaseLambda - ========传统的遍历方式:FF
11:35:32.615 [main] INFO test.BaseLambda - ============使用 Lambda 表达式以及函数操作(functional operation)
11:35:32.649 [main] INFO test.BaseLambda - AA
11:35:32.650 [main] INFO test.BaseLambda - BB
11:35:32.650 [main] INFO test.BaseLambda - DD
11:35:32.650 [main] INFO test.BaseLambda - CC
11:35:32.650 [main] INFO test.BaseLambda - EE
11:35:32.650 [main] INFO test.BaseLambda - FF
11:35:32.650 [main] INFO test.BaseLambda - ============使用双冒号操作符
11:35:32.651 [main] INFO test.BaseLambda - AA
11:35:32.651 [main] INFO test.BaseLambda - BB
11:35:32.651 [main] INFO test.BaseLambda - DD
11:35:32.651 [main] INFO test.BaseLambda - CC
11:35:32.651 [main] INFO test.BaseLambda - EE
11:35:32.651 [main] INFO test.BaseLambda - FF
AA
BB
DD
CC
EE
FF

Process finished with exit code 0

运行testStreamDuplicates()方法:

11:45:42.314 [main] INFO test.BaseLambda - AA
11:45:42.317 [main] INFO test.BaseLambda - BB
11:45:42.318 [main] INFO test.BaseLambda - CC
11:45:42.318 [main] INFO test.BaseLambda - DD
11:45:42.318 [main] INFO test.BaseLambda - EE
11:45:42.318 [main] INFO test.BaseLambda - FF

Process finished with exit code 0

注意:String[] array={"AA","BB","DD","CC","EE","FF"};是不会进行排序的。

 

package com.zyq;

import java.util.ArrayList;

public class ForPractise {
    public static void main(String[] args) {
        //创建增强for
        Student stu1 = new Student();
        stu1.setAge(1);
        stu1.setId("1");
        stu1.setName("丫丫丫1");
        Student stu2 = new Student();
        stu2.setAge(2);
        stu2.setId("2");
        stu2.setName("丫丫丫2");
        Student stu3 = new Student();
        stu3.setAge(3);
        stu3.setId("3");
        stu3.setName("丫丫丫3");
        final ArrayList<Student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);
        list.forEach(item->{
//            Student student = list.get(item.getAge()-1);
            System.out.println(item);
        });

    }
}

 

Student(id=1, name=丫丫丫1, age=1)
Student(id=2, name=丫丫丫2, age=2)
Student(id=3, name=丫丫丫3, age=3)