ToB企服应用市场:ToB评测及商务社交产业平台

标题: Java Stream 流笔记 [打印本页]

作者: 温锦文欧普厨电及净水器总代理    时间: 10 小时前
标题: Java Stream 流笔记
Java Stream 流笔记

目次


1. Stream 流是什么

Stream 是 Java 8 引入的用于处理集合数据的抽象 API,特点:

  1. // 示例:创建流
  2. List<String> list = Arrays.asList("a", "b", "c");
  3. Stream<String> stream = list.stream();  // 顺序流
  4. Stream<String> parallelStream = list.parallelStream();  // 并行流
复制代码
2. 常用 API 及利用

2.1 核心操作分类

操作范例方法示例特点中心操作filter(), map(), sorted()惰性求值,返回新Stream终端操作forEach(), collect(), count()触发实际计算,流不可复用 2.2 常用 API 示例

过滤(filter)

  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. List<Integer> evenNumbers = numbers.stream()
  3.     .filter(n -> n % 2 == 0)  // 中间操作:过滤偶数
  4.     .collect(Collectors.toList());  // 终端操作:收集结果
  5. // 结果:[2, 4]   
复制代码
映射(map)

  1. List<String> words = Arrays.asList("Java", "Stream");
  2. List<Integer> lengths = words.stream()
  3.     .map(String::length)  // 中间操作:转换为字符串长度
  4.     .collect(Collectors.toList());
  5. // 结果:[4, 6]
复制代码
排序(sorted)

  1. List<String> names = Arrays.asList("Bob", "Alice", "David");
  2. List<String> sortedNames = names.stream()
  3.     .sorted()  // 自然排序
  4.     .collect(Collectors.toList());
  5. // 结果:[Alice, Bob, David]
  6. // 自定义排序
  7. List<String> customSorted = names.stream()
  8.     .sorted((a, b) -> b.compareTo(a))  // 倒序
  9.     .collect(Collectors.toList());
  10. // 结果:[David, Bob, Alice]
复制代码

3. 与传统 API 对比

3.1 排序功能对比

集合工具类(Collections.sort)

  1. List<String> list = new ArrayList<>(Arrays.asList("c", "b", "a"));
  2. Collections.sort(list);  // 直接修改原集合
  3. // 优点:内存占用小
  4. // 缺点:破坏原数据,难以组合复杂操作
复制代码
Stream 实现排序

  1. List<String> original = Arrays.asList("c", "b", "a");
  2. List<String> sorted = original.stream()
  3.     .sorted()
  4.     .collect(Collectors.toList());  // 生成新集合
  5. // 优点:保持原数据不变,可组合其他操作
  6. // 缺点:需要额外内存存储新集合  
复制代码
3.2 综合对比

特性Stream API传统集合操作代码可读性⭐⭐⭐⭐(声明式)⭐⭐(下令式)并行处理内置 parallel() 方法需手动实现多线程内存服从较高内存占用(天生新集合)较低内存占用操作组合本领支持链式操作需分步实现数据修改不修改源数据可能修改源数据适用场景复杂数据处理流水线简单操作/性能敏感场景
4. 总结

优势:

留意事项:

选择发起:


  1. // 最佳实践示例:组合操作
  2. List<String> result = dataList.stream()
  3.     .filter(item -> item.startsWith("A"))  // 过滤
  4.     .map(String::toUpperCase)             // 转换
  5.     .sorted(Comparator.reverseOrder())    // 排序
  6.     .limit(10)                            // 限制数量
  7.     .collect(Collectors.toList());        // 收集结果
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4