mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
CollectorUtil添加支持对值集合进行映射的分组方法
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package cn.hutool.core.map;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.Builder;
|
||||
@@ -224,4 +225,11 @@ public class MapUtilTest {
|
||||
final Integer age = MapUtil.getInt(map, "age");
|
||||
Assert.assertNotNull(age);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void joinIgnoreNullTest() {
|
||||
final Dict v1 = Dict.of().set("id", 12).set("name", "张三").set("age", null);
|
||||
final String s = MapUtil.joinIgnoreNull(v1, ",", "=");
|
||||
Assert.assertEquals("id=12,name=张三", s);
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,9 @@ import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -27,4 +30,27 @@ public class CollectorUtilTest {
|
||||
.put("特拉叙马霍斯", Arrays.asList(3, 1, 2)).build(),
|
||||
nameScoresMap);
|
||||
}
|
||||
|
||||
@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));
|
||||
|
||||
final 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));
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user