1.打印列表元素

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

2.打印字符串长度

正常使用
  1. List<String> list = Arrays.asList("aa", "b", "ccc");
  2. ArrayList<Integer> lengths = new ArrayList<>();
  3. for (String s : list){
  4. lengths.add(s.length());
  5. }
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.字符串转大写

正常使用
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. List<String> upperCaseList = new ArrayList<>();
  3. for (String s : list) {
  4. upperCaseList.add(s.toUpperCase());
  5. }
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对象

  1. class Person{
  2. private String name;
  3. public Person(String name) {
  4. this.name = name;
  5. }
  6. public String getName() {
  7. return this.name;
  8. }
  9. @Override
  10. public String toString() {
  11. return "Person{" +
  12. "name='" + name + '\'' +
  13. '}';
  14. }
  15. }
  1. List<Person> people = new ArrayList<>();
  2. people.add(new Person("aaa"));
  3. people.add(new Person("ddd"));
  4. people.add(new Person("ccc"));
  5. people.add(new Person("bbb"));
  6. Collections.sort(people, new Comparator<Person>() {
  7. @Override
  8. public int compare(Person p1, Person p2) {
  9. return p1.getName().compareTo(p2.getName());
  10. }
  11. });
Lambda表达式
people.sort((p1, p2) -> p1.getName().compareTo(p2.getName()));
方法引用
people.sort(Comparator.comparing(Person::getName));

5.过滤列表中的偶数

正常使用
  1. List<Integer> numbers = Arrays.asList(1, 2, 3,3,2,1,7,8,9,6);
  2. List<Integer> evenNumbers = new ArrayList<>();
  3. for (Integer number : numbers) {
  4. if (number % 2 == 0) {
  5. evenNumbers.add(number);
  6. }
  7. }
Lambda表达式
  1. List<Integer> evenNumbersLambda = numbers.stream()
  2. .filter(n -> n % 2 == 0)
  3. .collect(Collectors.toList());
方法引用

方法

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

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

正常使用
  1. List<String> list = Arrays.asList("1", "2", "3");
  2. ArrayList<Object> integers = new ArrayList<>();
  3. for (String s:list){
  4. integers.add(Integer.valueOf(s));
  5. }
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.创建数组列表

正常使用
  1. List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
  2. for (int i = 0; i < list.size(); i++) {
  3. list.set(i, list.get(i) + list.get(i));
  4. }
Lambda表达式
List<String> listLambda = Arrays.asList("a", "b", "c").stream().map(s -> s + s).collect(Collectors.toList());
方法引用

方法

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

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

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

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