如何从List <object>构建Map <object,list <object =“” >>地图

时间:2018-10-19 14:14:16

标签: list java-8 guava

我按照以下步骤构建idMap:

class Item {
    private int id;
    private int skuId;
    //some getter and setter
}

Map<Integer, List<Integer>> buildIdMap(List<Item> items) {

    Map<Integer, List<Integer> idMap = Maps.newHashMap();

    for (Item item : items) {
        if (!idMap.contains(item.getId())) {
            idMap.put(item.getId(), List.newArrayList());
        }
        idMap.put(item.getId(), item.getSkuId());
    }
    return idMap;
}

我如何利用番石榴或java8做同样的事情?

2 个答案:

答案 0 :(得分:0)

您可以使用Java8来做到这一点,

Map<Integer, List<Integer>> idMap = items.stream()
        .collect(Collectors.groupingBy(Item::getId, 
                Collectors.mapping(Item::getSkuId, Collectors.toList())));

答案 1 :(得分:-1)

使用番石榴的Multimaps.index(Iterable<V>,Function<? super V,K>)

.get

我认为这并不是您所要的,但是它会比您期望的方法做得更好。