複数のキーでグループ化できるかどうか確認したい。 、私は必要な動作をJavaカスタマイズされたグループ化と||条件
Name id
David 123
David 456
Bryant 123
Ryan 456
Foo 555
Bar 555
そして、私は意味
[(David, 123), (David, 456), (Bryant, 123), (Ryan, 456)]
[(Foo, 555), (Bar, 555)]
にグループにそれらをすることができます:
Class Something {
String name;
String id;
}
物事のリスト: のは、私はクラスを得たとしましょうクラス "equals"は名前かidのどちらかが同じでクラスが等しいので、
public boolean equals(Object o) {
Something that = (Something) o;
return this.name.equals(that.name) || this.id.equals(that.id);
}
しかし、関数equalsの問題は非推移的なので、対応するhashCode関数を書くことができません。
私は私は2つのハッシュマップを作成した場合、私は
Map<String, Something> idToSomething;
Map<String, Something> nameToSomething;
をすることによって、これを達成することができます今の質問はどのように私はそれらのものがでている場合と言う、コレクションを使用して、私がしたい動作を実現すべきであることを知っていますリストには、代と呼ばれるので、私は、私も変更できるようにしたい
somethings.stream().collect(Collectors.groupby(???))
ノートに似た何かを行うことができます?将来的に戦略別に異なるグループ分けを適用することで、将来的には名前またはIDでグループ化することができます。これについて移動する
は、GoogleグアバのMultimapは –