如何使用番石榴的MultiMap拆分值列表

时间:2017-12-27 11:52:24

标签: java guava

地图属于Map<String, List<MyClass>>类型 我有超过100个与Key关联的MyClass对象。 如果它超过100,我需要拆分它。

例如 输入是

Map<String, List<MyClass>> myMap = new HashMap<String, List<MyClass>>();

myMap.put("ABC", [CustomObject1,CustomObject2,CustomObject3....CustomObject100...CustomObject110]);

&安培;输出应该是

myMap.put("ABC", [CustomObject1,CustomObject2,CustomObject3....CustomObject100]);
myMap.put("ABC", [CustomObject100,CustomObject101....CustomObject110]);

我想到获取myMap.containsKey(字符串)并检查列表的大小,然后创建新条目或将其添加到同一个条目中。 我尝试使用番石榴的多重图,但它返回Collection&gt;当我试图获取元素,所以不知道如何插入它。或者,如果有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

尝试使用Guava Lists.partition

Map<String, List<MyClass>> myMap = new HashMap<String, List<MyClass>>();

myMap.put("ABC", [CustomObject1,CustomObject2,CustomObject3....CustomObject100...CustomObject110]);

Map<String, List<List<MyClass>>> output = myMap.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), e -> Lists.partition(e.getValue(), 100)));