java stream 将数据分组并在组内进行排序

时间:2025-04-09 10:44:19
package com.my.app.stream; // 此处为你自己的路径 import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * Description 分组,并在组内进行排序 */ public class GroupBy { public static void main(String[] args) { List<String> lt = Arrays.asList("aaa", "bbbb", "CC", "dd", "ff", "GGG"); //按大小写进行分组 Map<Boolean, List<String>> collect = lt.stream().collect(Collectors.groupingBy(x -> x.equals(x.toUpperCase()))); System.out.println("before:" + collect); for (Map.Entry<Boolean, List<String>> entry : collect.entrySet()) { List<String> value = entry.getValue(); value.sort(GroupBy::compareByLength); } System.out.println("after:" + collect); } // 组内,按长度从大到小进行排序 public static int compareByLength(String s1, String s2) { int len1 = s1.length(); int len2 = s2.length(); if (len1 == len2) { return 0; } return len1 > len2 ? -1 : 1; } }