私はずっと前にプログラミングを始めました。あなたの助けが必要です。私はObject1のListを持っています、Object1はItem1、Item2、Item3で構成されています。値のリストを別のJavaの値リストにマッピングする8
私はItem2でグループ化し、それぞれのItem2をObject1のリストでマップしたいと考えています。 Object1の各ListをItem3のリストにマップして、最後に私は別のItem3の数を数えたいと思いますそれぞれのItem List3に。
まもなく、私はObject1のList1にあるItem2あたりのItem3の数を数えたいと思います。これを行うには
は、ここで私はこれまでやっていることです:
Map<Item2, List<Object1>> object1GroupedByItem2 = object1List.stream().collect(Collectors.groupingBy(object1->object1.getItem2()));
List<Entry<Item2, List<Object1>>> object1GroupedByItem2List = object1GroupedByItem2.entrySet().stream().collect(Collectors.toList());
Map<Item2, List<Item3>> item3GroupedByItem2 = object1GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().map(object1->object1.getItem3()).collect(Collectors.toList())));
List<Entry<Item2, List<Item3>>> item3GroupedByItem2List = item3GroupedByItem2.entrySet().stream().collect(Collectors.toList());
Map<Item2, List<Item3>> distinctItem3GroupedByItem2 = item3GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().distinct().collect(Collectors.toList())));
List<Entry<Item2, List<Item3>>> distinctItem3GroupedByItem2List = distinctItem3GroupedByItem2.entrySet().stream().collect(Collectors.toList());
Map<Item2, Long> nbItem3PerItem2 = distinctItem3GroupedByItem2List.stream().collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue().stream().count());
を、私は同じことを行うには良い方法がなければならないことを、ほとんど確信しているが、私は方法がわかりません。.. 。 私を助けてもらえますか?事前に
おかげ
編集:
public class Object1 {
private Item1 item1;
private Item2 item2;
private Item3 item3;
public Object1(Item1 item1, Item2 item2, Item3 item3) {
this.item1 = item1;
this.item2 = item2;
this.item3 = item3;
}
public Item1 getItem1() {
return item1;
}
public void setItem1(Item1 item1) {
this.item1 = item1;
}
public Item2 getItem2() {
return item2;
}
public void setItem2(Item2 item2) {
this.item2 = item2;
}
public Item3 getItem3() {
return item3;
}
public void setItem3(Item3 item3) {
this.item3 = item3;
}
}
アイテム1、アイテム2とITEM3だけ文字列をラップしています。
エントリの一覧については、どうすれば削除できますか?私は私の地図を作るためにそれらを必要としないのですか?ここで
我々は明らかに、彼らは一緒に関連する方法を理解するように、あなたが私たちのクラスオブジェクト1、アイテム1、アイテム2とITEM3の定義を示すべきです。また、コードを読みやすくするように書式を設定する必要があります。 – Heri
私は、エントリのリストを取り除くことから始めます。それらは単に必要ではありません。 –
これは設計上の悪夢のようですが、通常は 'x1'、' x2'、 'x3'を作りません。オブジェクトの複数のインスタンスを作成し、それらを配列/コレクションに格納します。命名も重要です。あなたが選んだ名前は非常にあいまいで混乱しています(私の頭の中で試して追跡することさえも) – Rogue