今日学习 -2025/3/25

StringUtils.join()

函数原型:
public static String join(Object[] array, String separator)
public static String join(Iterable<?> iterable, String separator)

StringUtils.join() 是 Apache Commons Lang 库中的一个实用方法,它的主要作用是将数组、集合等可迭代对象中的元素连接成一个字符串。相较于 Java 标准库中的 String.join() 方法,StringUtils.join() 提供了更多的功能和灵活性,比如支持对 null 值的处理等。
StringUtils.join(nameList, ",")
作用 : 将nameList集合中的数据 提取出来 拼接成字符串 , 中间用','分隔
会用到的地点: 将集合转换为字符串的场景

stream流

Stream 流是 Java 8 引入的一个新的抽象概念,它允许你以声明式的方式处理集合中的元素。借助 Stream 流,你能够对集合元素进行各种操作,像过滤、映射、排序、聚合等,从而编写出更简洁、更具可读性的代码。
Stream 流并非数据结构,也不存储数据,它只是对数据源(如集合、数组等)进行一系列操作的抽象。流操作可以分为中间操作和终端操作。中间操作会返回一个新的流,允许你链式调用多个中间操作;终端操作会触发流的处理并产生一个结果。
今日用到的
List<String> nameList = ordersSales.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());
解析 : ordersSales是一个对象为GoodsSalesDTO的集合 , 使用map()提取出其中的name 属性 最后使用collect(Collectors.toList()) 转换为字符串集合
Integer totalOrderCount = orderCountList.stream().reduce(Integer::sum).get();
解析: reduce是聚合函数通过reduce(Integer::sum) 操作可以求出集合中所有值的和 , 相当于 reduce((a,b) -> a + b)

总结 : 可以简化开发 , 让代码更加优雅 , 可读性不详 , 但b格高

关于stream流 其他常用的操作:

中间操作
中间操作会返回一个新的流,允许你对元素进行进一步的处理。常见的中间操作有:
filter:过滤元素

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

public class FilterExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(n -> n % 2 == 0)
                                           .collect(Collectors.toList());
        System.out.println(evenNumbers); 
    }
}

map:映射元素

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

public class MapExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3);
        List<Integer> squaredNumbers = numbers.stream()
                                              .map(n -> n * n)
                                              .collect(Collectors.toList());
        System.out.println(squaredNumbers); 
    }
}

sorted:排序元素

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

public class SortedExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(3, 1, 2);
        List<Integer> sortedNumbers = numbers.stream()
                                             .sorted()
                                             .collect(Collectors.toList());
        System.out.println(sortedNumbers); 
    }
}

终端操作
终端操作会触发流的处理并产生一个结果。常见的终端操作有:
forEach:遍历元素

import java.util.Arrays;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3);
        numbers.stream()
               .forEach(System.out::println);
    }
}

collect:收集元素到集合

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

public class CollectExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3);
        List<Integer> squaredNumbers = numbers.stream()
                                              .map(n -> n * n)
                                              .collect(Collectors.toList());
        System.out.println(squaredNumbers); 
    }
}

reduce:聚合元素

import java.util.Arrays;
import java.util.List;

public class ReduceExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3);
        int sum = numbers.stream()
                         .reduce(0, (a, b) -> a + b);
        System.out.println(sum); 
    }
}

并行流
并行流允许在多个线程上并行处理元素,从而提高处理大数据集的性能。可以通过 parallelStream() 方法创建并行流。

import java.util.Arrays;
import java.util.List;

public class ParallelStreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        int sum = numbers.parallelStream()
                         .reduce(0, (a, b) -> a + b);
        System.out.println(sum); 
    }
}
posted @ 2025-03-25 22:36  XYu1230  阅读(17)  评论(0)    收藏  举报