添加支持对值集合进行映射的分组方法

This commit is contained in:
huangchengxing
2022-10-19 11:21:31 +08:00
parent c56f36ac4f
commit d799e43e54
2 changed files with 85 additions and 0 deletions

View File

@@ -78,4 +78,28 @@ public class CollectorUtilTest {
.put(3, 1L)
.build(), map);
}
@Test
public void testGroupingByAfterValueMapped() {
List<Integer> list = Arrays.asList(1, 1, 2, 2, 3, 4);
Map<Boolean, Set<String>> map = list.stream()
.collect(CollectorUtil.groupingBy(t -> (t & 1) == 0, String::valueOf, LinkedHashSet::new, LinkedHashMap::new));
Assert.assertEquals(LinkedHashMap.class, map.getClass());
Assert.assertEquals(new LinkedHashSet<>(Arrays.asList("2", "4")), map.get(Boolean.TRUE));
Assert.assertEquals(new LinkedHashSet<>(Arrays.asList("1", "3")), map.get(Boolean.FALSE));
map = list.stream()
.collect(CollectorUtil.groupingBy(t -> (t & 1) == 0, String::valueOf, LinkedHashSet::new));
Assert.assertEquals(HashMap.class, map.getClass());
Assert.assertEquals(new LinkedHashSet<>(Arrays.asList("2", "4")), map.get(Boolean.TRUE));
Assert.assertEquals(new LinkedHashSet<>(Arrays.asList("1", "3")), map.get(Boolean.FALSE));
Map<Boolean, List<String>> map2 = list.stream()
.collect(CollectorUtil.groupingBy(t -> (t & 1) == 0, String::valueOf));
Assert.assertEquals(Arrays.asList("2", "2", "4"), map2.get(Boolean.TRUE));
Assert.assertEquals(Arrays.asList("1", "1", "3"), map2.get(Boolean.FALSE));
}
}