Skip to content

Stream流是处理集合的一种响应式编程

一、方法

1.1、filter()

java
List<String> list = Arrays.asList("Hello","World","Java");
List<Integer> intList = Arrays.asList(2,1,4,5,6,3);
/**
* filter() 过滤方法参数是 Predicate 条件 也可以直接传入larmd表达式
* .collect(Collectors.toList()); 返回一个新的集合
*
*/
List<String> collect = list.stream()
    .filter(str -> str.length() >= 5)
    .collect(Collectors.toList());
System.out.println(collect); // [Hello, World]

1.2、limit()

java
List<String> list = Arrays.asList("Hello","World","Java");
List<Integer> intList = Arrays.asList(2,1,4,5,6,3);

/**
 * limit() 方法截取数组中的前几位元素
 * .limit(2) 截取数组中的前两个元素
 *
 */

list.stream()
        .limit(2)
        .forEach(str -> System.out.println(str)); // HelloWorld

1.3、sorted()

java
List<String> list = Arrays.asList("Hello","World","Java");
List<Integer> intList = Arrays.asList(2,1,4,5,6,3);

/**
 * sorted()方法排序 默认是升序
 * .sorted(Comparator.reverseOrder())  降序 排序
 */
intList.stream()
        .sorted(Comparator.reverseOrder())
        .forEach(num -> System.out.println(num));
// 输出最大
// max(Integer::compareTo) 参数的意思为,以Integer方式进行排序
System.out.println(intList.stream()
        .max(Integer::compareTo).get());
// 输出最下
System.out.println(intList.stream()
        .min(Integer::compareTo).get());
// 输出集合长度
System.out.println(intList.stream().count());

1.4、map()

  • 基础
    java
    List<String> list = Arrays.asList("Hello","World","Java");
    List<Integer> intList = Arrays.asList(2,1,4,5,6,3);
    /**
     * map() 对数组中的元素进行操作
     */
    List<Integer> collect = intList.stream()
            .map(num -> num + 10)
            .collect(Collectors.toList());
    System.out.println(collect);
  • 结果list转换(doList转dtoList)
    java
          // 查询数据库返回doList
          List<DoctorInfoNeuDO> doctorInfoNeuDOS = doctorInfoNeuDAO.selectList(wrapper);
          // doList转换成dtoList
          List<DoctorInfoNeuDTO> doctorInfoNeuDTOList = doctorInfoNeuDOS.stream().map(item -> {
              DoctorInfoNeuDTO doctorInfoNeuResDTO = new DoctorInfoNeuDTO();
              BeanUtils.copyProperties(item, doctorInfoNeuResDTO);
              return doctorInfoNeuResDTO;
          }).collect(Collectors.toList());
          // 返回dtoList结果集
          return doctorInfoNeuDTOList;

1.5、reduce()

java
List<String> list = Arrays.asList("Hello","World","Java");
List<Integer> intList = Arrays.asList(2,1,4,5,6,3);
/**
 * reduce() 方法 返回的是一个值,
 * 以数字数组集合为例
 * 参数是在 传了两个值 sum,num
 * sum为要累加的和的值 num为数组中的每个元素
 */
System.out.println(intList.stream()
        .reduce((sum, num) -> sum += num).get());

1.6、collect()

java
List<String> list = Arrays.asList("Hello","World","Java");
List<Integer> intList = Arrays.asList(2,1,4,5,6,3);
 /**
 * collect() 方法 基于目标集合生成一个新的集合
 */
System.out.println(intList.stream()
        .filter(num -> num % 2 == 0)
        .collect(Collectors.toList()));