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())));