1.打印列表元素

正常使用

 List<String> list = Arrays.asList("a", "b", "c");
        for (String str: list){
            System.out.println(str);
        }

Lambda表达式

 list.forEach(e -> System.out.println(e));

方法引用

list.forEach(System.out::println);

2.打印字符串长度

正常使用

 List<String> list = Arrays.asList("aa", "b", "ccc");
        ArrayList<Integer> lengths = new ArrayList<>();
        for (String s : list){
            lengths.add(s.length());
        }

Lambda表达式

  List<Integer> collect = list.stream().map(s -> s.length()).collect(Collectors.toList());

方法引用

List<Integer> collect = list.stream().map(String::length).collect(Collectors.toList());

3.字符串转大写

正常使用

 List<String> list = Arrays.asList("a", "b", "c");
        List<String> upperCaseList = new ArrayList<>();
        for (String s : list) {
            upperCaseList.add(s.toUpperCase());
        }

Lambda表达式

  List<String> upperCaseList = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());

方法引用

  List<String> upperCaseList = list.stream().map(String::toUpperCase).collect(Collectors.toList()); 

4.对象排序

正常使用

person对象

class Person{
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}
List<Person> people = new ArrayList<>();
    people.add(new Person("aaa"));
    people.add(new Person("ddd"));
    people.add(new Person("ccc"));
    people.add(new Person("bbb"));
    Collections.sort(people, new Comparator<Person>() {
        @Override
        public int compare(Person p1, Person p2) {
            return p1.getName().compareTo(p2.getName());
        }
    });

Lambda表达式

   people.sort((p1, p2) -> p1.getName().compareTo(p2.getName()));

方法引用

   people.sort(Comparator.comparing(Person::getName));

5.过滤列表中的偶数

正常使用

List<Integer> numbers = Arrays.asList(1, 2, 3,3,2,1,7,8,9,6);
        List<Integer> evenNumbers = new ArrayList<>();
        for (Integer number : numbers) {
            if (number % 2 == 0) {
                evenNumbers.add(number);
            }
        }

Lambda表达式

List<Integer> evenNumbersLambda = numbers.stream()
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());

方法引用

方法

class IntegerPredicates {
    // 修改 isEven 方法以接受 Integer 参数并返回 boolean
    public static boolean isEven(Integer n) {
        return n % 2 == 0;
    }
}
List<Integer> evenNumbersMethodRef = numbers.stream()
        .filter(IntegerPredicates::isEven) // 正确的方法引用
        .collect(Collectors.toList());

6.将字符串列表转换为整数列表

正常使用

 List<String> list = Arrays.asList("1", "2", "3");
        ArrayList<Object> integers = new ArrayList<>();
        for (String s:list){
            integers.add(Integer.valueOf(s));
        }

Lambda表达式

List<Integer> integersLambda = list.stream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());

方法引用

 List<Integer> integersMethodRef = list.stream().map(Integer::valueOf).collect(Collectors.toList());

7.创建数组列表

正常使用

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
    for (int i = 0; i < list.size(); i++) {
        list.set(i, list.get(i) + list.get(i));
    }

Lambda表达式

List<String> listLambda = Arrays.asList("a", "b", "c").stream().map(s -> s + s).collect(Collectors.toList());

方法引用

方法

class StringConcatenator {
    // 定义一个实例方法,用于将字符串加倍
    public static String duplicate(String s) {
        return s + s;
    }
}
List<String> listMethodRef = Arrays.asList("a", "b", "c").stream()
                .map(StringConcatenator::duplicate)
                .collect(Collectors.toList());

8.比较两个对象是否相等

正常使用

        // 创建两个字符串对象
        String str1 = "hello";
        String str2 = "hello";
        System.out.println(str2.equals(str1));

Lambda表达式

BiPredicate<String, String> isEqualLambda = (s1, s2) -> Objects.equals(s1, s2);

方法引用

BiPredicate<String, String> isEqualMethodRef = Objects::equals;

转载自开思通智网:https://www.opensnn.com/os/article/10000903