查工作单位的网站,怎么做刷业务网站,平台网站怎么推广,wordpress带颜色的文字Java 集合操作完整清单#xff08;Java 8 Stream API#xff09;给你一个完整的Java集合操作清单#xff0c;包含代码示例。现代Java推荐使用Stream API进行集合操作。1. 过滤操作// 过滤符合条件的元素ListInteger numbers Arrays.asList(1, 2, 3, 4, 5, 6);ListJava 8 Stream API给你一个完整的Java集合操作清单包含代码示例。现代Java推荐使用Stream API进行集合操作。1. 过滤操作// 过滤符合条件的元素ListInteger numbers Arrays.asList(1, 2, 3, 4, 5, 6);ListInteger even numbers.stream().filter(n - n % 2 0).collect(Collectors.toList()); // [2, 4, 6]// 去重ListInteger withDups Arrays.asList(1, 2, 2, 3, 3, 3);ListInteger distinct withDups.stream().distinct().collect(Collectors.toList()); // [1, 2, 3]// 分页跳过前n个取前m个ListInteger paged numbers.stream().skip(2).limit(3).collect(Collectors.toList()); // [3, 4, 5]2. 映射操作// 类型转换ListString strings Arrays.asList(1, 2, 3);ListInteger ints strings.stream().map(Integer::parseInt).collect(Collectors.toList()); // [1, 2, 3]// 提取对象属性ListUser users getUsers();ListString names users.stream().map(User::getName).collect(Collectors.toList());// 扁平化将多个集合合并为一个ListListInteger nested Arrays.asList(Arrays.asList(1, 2),Arrays.asList(3, 4));ListInteger flat nested.stream().flatMap(List::stream).collect(Collectors.toList()); // [1, 2, 3, 4]3. 排序操作ListInteger nums Arrays.asList(3, 1, 4, 1, 5, 9);// 自然排序升序ListInteger sorted nums.stream().sorted().collect(Collectors.toList()); // [1, 1, 3, 4, 5, 9]// 自定义排序降序ListInteger reversed nums.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); // [9, 5, 4, 3, 1, 1]// 按对象属性排序ListUser users getUsers();ListUser sortedByAge users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());// 多字段排序ListUser sortedMulti users.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getName)).collect(Collectors.toList());4. 聚合操作取最大、最小、求和等ListInteger nums Arrays.asList(3, 1, 4, 1, 5, 9);// 求和int sum nums.stream().mapToInt(Integer::intValue).sum(); // 23// 取最大值OptionalInteger max nums.stream().max(Integer::compareTo); // Optional[9]// 取最小值OptionalInteger min nums.stream().min(Integer::compareTo); // Optional[1]// 平均值double avg nums.stream().mapToDouble(Integer::doubleValue).average().orElse(0.0); // 3.83// 统计汇总IntSummaryStatistics stats nums.stream().mapToInt(Integer::intValue).summaryStatistics();// stats.getCount(), stats.getSum(), stats.getMin(), stats.getMax(), stats.getAverage()// 自定义reduceOptionalInteger product nums.stream().reduce((a, b) - a * b); // 所有数相乘5. 集合操作交集、并集、差集SetInteger set1 new HashSet(Arrays.asList(1, 2, 3, 4));SetInteger set2 new HashSet(Arrays.asList(3, 4, 5, 6));// 交集SetInteger intersection set1.stream().filter(set2::contains).collect(Collectors.toSet()); // [3, 4]// 并集SetInteger union new HashSet(set1);union.addAll(set2); // [1, 2, 3, 4, 5, 6]// 差集set1有但set2没有SetInteger difference set1.stream().filter(n - !set2.contains(n)).collect(Collectors.toSet()); // [1, 2]// 对称差集只在其中一个集合的元素SetInteger disjunctive set1.stream().filter(n - !set2.contains(n)).collect(Collectors.toSet());set2.stream().filter(n - !set1.contains(n)).forEach(disjunctive::add); // [1, 2, 5, 6]6. 分组操作ListUser users getUsers();// 按单个字段分组MapString, ListUser groupedByCity users.stream().collect(Collectors.groupingBy(User::getCity));// 按条件分组MapString, ListUser groupedByAgeRange users.stream().collect(Collectors.groupingBy(u -u.getAge() 30 ? 中年 : 青年));// 多级分组MapString, MapString, ListUser multiGroup users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.groupingBy(User::getGender)));// 分组并统计数量MapString, Long countByCity users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.counting()));// 分组并求和MapString, Integer sumAgeByCity users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.summingInt(User::getAge)));// 分组并取最大MapString, OptionalUser maxAgeByCity users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.maxBy(Comparator.comparing(User::getAge))));7. 分区操作// 按布尔条件分区只能分为两组ListInteger nums Arrays.asList(1, 2, 3, 4, 5, 6);MapBoolean, ListInteger partitioned nums.stream().collect(Collectors.partitioningBy(n - n % 2 0));// {false[1, 3, 5], true[2, 4, 6]}8. 匹配操作ListInteger nums Arrays.asList(1, 2, 3, 4, 5);// 是否全部匹配boolean allEven nums.stream().allMatch(n - n % 2 0); // false// 是否有任意匹配boolean anyEven nums.stream().anyMatch(n - n % 2 0); // true// 是否全部不匹配boolean noneMatch nums.stream().noneMatch(n - n 10); // true9. 查找操作ListInteger nums Arrays.asList(1, 2, 3, 4, 5);// 查找第一个OptionalInteger first nums.stream().findFirst(); // Optional[1]// 查找任意一个并行流时更高效OptionalInteger any nums.stream().findAny(); // Optional[1]// 配合过滤查找第一个匹配OptionalInteger firstEven nums.stream().filter(n - n % 2 0).findFirst(); // Optional[2]10. 其他实用操作ListString strings Arrays.asList(a, b, c, d);// 字符串拼接String joined strings.stream().collect(Collectors.joining(, )); // a, b, c, d// 转MapMapInteger, String idToNameMap users.stream().collect(Collectors.toMap(User::getId, User::getName));// 处理Map的EntryMapString, Integer map new HashMap();map.entrySet().stream().filter(entry - entry.getValue() 10).forEach(System.out::println);// 去重并保持顺序ListInteger withDups Arrays.asList(1, 2, 2, 3, 3, 3);ListInteger distinctOrdered withDups.stream().distinct().collect(Collectors.toList()); // [1, 2, 3]// 自定义收集器如果需要CollectorInteger, ?, ListInteger customCollector Collectors.toCollection(LinkedList::new);性能提示大数据量考虑使用并行流 .parallelStream()原始类型使用 IntStream, LongStream, DoubleStream 避免装箱开销提前过滤先过滤减少后续操作的数据量避免多次遍历尽量在一次流操作中完成所有处理传统方式 vs Stream API// 传统for循环ListInteger result new ArrayList();for (Integer n : numbers) {if (n 3) {result.add(n * 2);}}// Stream方式更简洁ListInteger result numbers.stream().filter(n - n 3).map(n - n * 2).collect(Collectors.toList());