1.打印列表元素

正常使用
List<String> list = Arrays.asList("a", "b", "c");
        for (String str: list){
            System.out.println(str);
        }
  • 1.
  • 2.
  • 3.
  • 4.
Lambda表达式
list.forEach(e -> System.out.println(e));
  • 1.
方法引用
list.forEach(System.out::println);
  • 1.

2.打印字符串长度

正常使用
List<String> list = Arrays.asList("aa", "b", "ccc");
        ArrayList<Integer> lengths = new ArrayList<>();
        for (String s : list){
            lengths.add(s.length());
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
Lambda表达式
List<Integer> collect = list.stream().map(s -> s.length()).collect(Collectors.toList());
  • 1.
方法引用
List<Integer> collect = list.stream().map(String::length).collect(Collectors.toList());
  • 1.

3.字符串转大写

正常使用
List<String> list = Arrays.asList("a", "b", "c");
        List<String> upperCaseList = new ArrayList<>();
        for (String s : list) {
            upperCaseList.add(s.toUpperCase());
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
Lambda表达式
List<String> upperCaseList = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
  • 1.
方法引用
List<String> upperCaseList = list.stream().map(String::toUpperCase).collect(Collectors.toList()); 
  • 1.

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 + '\'' +
                '}';
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
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());
        }
    });
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
Lambda表达式
people.sort((p1, p2) -> p1.getName().compareTo(p2.getName()));
  • 1.
方法引用
people.sort(Comparator.comparing(Person::getName));
  • 1.

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);
            }
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
Lambda表达式
List<Integer> evenNumbersLambda = numbers.stream()
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());
  • 1.
  • 2.
  • 3.
方法引用

方法

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

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

正常使用
List<String> list = Arrays.asList("1", "2", "3");
        ArrayList<Object> integers = new ArrayList<>();
        for (String s:list){
            integers.add(Integer.valueOf(s));
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
Lambda表达式
List<Integer> integersLambda = list.stream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
  • 1.
方法引用
List<Integer> integersMethodRef = list.stream().map(Integer::valueOf).collect(Collectors.toList());
  • 1.

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));
    }
  • 1.
  • 2.
  • 3.
  • 4.
Lambda表达式
List<String> listLambda = Arrays.asList("a", "b", "c").stream().map(s -> s + s).collect(Collectors.toList());
  • 1.
方法引用

方法

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

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

正常使用
// 创建两个字符串对象
        String str1 = "hello";
        String str2 = "hello";
        System.out.println(str2.equals(str1));
  • 1.
  • 2.
  • 3.
  • 4.
Lambda表达式
BiPredicate<String, String> isEqualLambda = (s1, s2) -> Objects.equals(s1, s2);
  • 1.
方法引用
BiPredicate<String, String> isEqualMethodRef = Objects::equals;
  • 1.

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