【JAVA】【Stream流】

1. filter操作

filter()方法用于根据给定的条件过滤列表中的元素,仅保留满足条件的项。

java 复制代码
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
    List<Integer> res = list.stream().filter(a -> a % 2 == 0).collect(Collectors.toList());
    for(Integer it :res){
        System.out.println(it);
    }

Collectors属于 package java.util.stream;

2. Sorted操作

sorted()方法可以对流中的元素进行排序,可以使用自然顺序或自定义Comparator。

java 复制代码
    List<String> names = Arrays.asList("Bob", "Alice", "Charlie", "David");
    List<String> sortedNames = names.stream()
                                   .sorted()
                                   .collect(Collectors.toList()); // 自然排序
    List<String> reverseSortedNames = names.stream()
                                          .sorted(Comparator.reverseOrder())
                                          .collect(Collectors.toList()); // 倒序排序

3. GroupingBy操作

groupBy()方法用于将流中的元素按照指定的属性进行分组,返回的是Map类型结果。

java 复制代码
    List<Employee> employees = ... // 假设Employee类有department属性
    Map<String, List<Employee>> groupedEmployees = employees.stream()
                                                        .collect(Collectors.groupingBy(Employee::getDepartment));

4.map操作

map 方法是 Stream 接口中的一个中间操作,它接受一个 Function 接口作为参数。这个 Function 接口定义了如何将流中的元素映射为另一个元素。map 方法返回一个新的 Stream,其中包含由原始流中的元素经过函数转换后的结果。

map 方法的主要用途是对流中的元素进行转换或映射。这种转换可以是类型转换、数据提取、逻辑处理等。通过 map 方法,可以轻松地实现复杂的数据处理逻辑,同时保持代码的简洁和可读性。

字符串长度转换

java 复制代码
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class StreamMapExample1 {
        public static void main(String[] args) {
            List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
            // 使用 map 将字符串列表转换为对应的长度列表
            List<Integer> lengths = names.stream()
                                         .map(String::length)
                                         .collect(Collectors.toList());
            System.out.println("字符串长度列表: " + lengths);
        }
    }

数字加倍

java 复制代码
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class StreamMapExample2 {
        public static void main(String[] args) {
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
            // 使用 map 将每个数字加倍
            List<Integer> doubledNumbers = numbers.stream()
                                                 .map(n -> n * 2)
                                                 .collect(Collectors.toList());
            System.out.println("加倍后的数字列表: " + doubledNumbers);
        }
    }

java 复制代码
int minCol = recList.stream().sorted(Comparator.comparing(Node::getCol))
      				.collect(Collectors.toList()).get(0).col;
      				
int maxWidth = widthList.stream().sorted().collect(Collectors.toList()).get(widthList.size() - 1);

int maxHeight = heightList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()).get(0);
相关推荐
无限的鲜花2 小时前
反射(原创推荐)
java·开发语言
IT二叔2 小时前
Java项目部署-03-teamcity-cicd-docker镜像流水线方式部署
java·ci/cd·持续部署
hhzz2 小时前
基于监控视频的水位尺自动识别技术方案与实现
python·opencv·yolo·图像识别·cv
yongche_shi3 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he3 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
超级数据查看器3 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
weixin_408099673 小时前
OCR批量识别图片方案:从手动处理到自动化API系统(Python/Java/PHP实战)
图像处理·python·ocr·文字识别·api调用·批量识别·石榴智能
AI行业学习4 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
折哥的程序人生 · 物流技术专研4 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai5 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化