ストリームAPIをグループ化する複数のグループにおける単一の要素

user902383:

私は要素をグループ化していますいくつかの古いコードを、検討しています。これは、多かれ少なかれ、次のようになります。

Map<Long,List<Items>> groupedItems = ...
for (long groupid : groups){
    for (Item item :items){
        if (isGroupAccepting(item.getId(),groupid) || groupid == item.getGroup()) {
            groupedItems.get(groupid).add(item);
        }
    }
}

私は、ストリームAPIからグループ化使用して、それを置き換えるために計画されたが、私はこだわっています。それは私の第二の条件のために罰金を動作しますが、アイテムは、アイテムのようなものを受け入れ、すべてのグループに追加する必要があります最初のもの、をどのように扱いますか?それが実際に可能か、私はここで失われた原因を戦っていますか?

彼らは次のとおりでした:

あなたはすべての有効なグループIDとアイテムのペアを作成し、グループIDによってグループにそれらをすることができます:

Map<Long,List<Item>> groupedItems =
    groups.stream()
          .flatMap(g -> items.stream()
                             .filter(i -> isGroupAccepting(i.getId(),g) || g == i.getGroup())
                             .map(i -> new SimpleEnty<>(g,i))
          .collect(Collectors.groupingBy(Map.Entry::getKey,
                   Collectors.mapping(Map.Entry::getValue,
                                      Collectors.toList())));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=120039&siteId=1
おすすめ