私は解決できないような2つの問題があります。最初の1つは、ユーザーが渡すことができる1-nのネストされたグループが存在する場所で動的なネストされたグループ化を行う方法が必要です。Java 8ネストされたグループ化
第2の問題は、入れ子ではなく連結します。
私の例入力は次のようになります。キーがマップ内にネストされたマップではなく、連結されている
{
"10.0.1.1user": [
{
"uid": "tiger",
"ip": "10.0.1.1",
"group": "user"
},
{
"uid": "woods",
"ip": "10.0.1.1",
"group": "user"
}
],
"10.0.1.0admin": [
"uid": "root",
"ip": "10.0.1.0",
"group": "admin"
]
}
お知らせ:
List<Map<String, String>> fakeData = new LinkedList<>();
Map<String, String> data1 = new HashMap<>();
data1.put("ip","10.0.1.0");
data1.put("uid","root");
data1.put("group","admin");
fakeData.add(data1);
Map<String, String> data2 = new HashMap<>();
data2.put("ip","10.0.1.1");
data2.put("uid","tiger");
data2.put("group","user");
fakeData.add(data2);
Map<String, String> data3 = new HashMap<>();
data3.put("ip","10.0.1.1");
data3.put("uid","woods");
data3.put("group","user");
fakeData.add(data3);
最終結果はマップキーの連結を持っています。
私はそれがどんな運なしで動的にすることができgroupingbyを作成しようとしています:
fakeData.stream()
.collect(groupingBy(map -> map.get("ip"),
groupingBy(map -> map.get("uuid"),
... nested "n" times)));
は、これは私が実装しようとしているインターフェースである約
public Map<String, List<Map<String, String>>> doGrouping(List<String> columns,
List<Map<String, String>> data);
実装しようとしているメソッドの入出力を完全に理解していません。出力タイプに "n"個のネストされたグループが含まれているようには見えません。あなたのサンプルデータで 'doGrouping'をどのように呼び出すつもりか、期待される出力はどうなるでしょうか? – 4castle
'doGrouping'の' columns'引数に 'N'要素が含まれている場合、' N'要素のそれぞれでネストされたグループを作成する必要がありますか?そして、各グループのキーを入れ子にするのではなく連結したいと思っていますか? –
出力またはインターフェイスにnレベルのネストを示唆するものは表示されません。トップレベルで複数のキーでグループ化しているようです。 – shmosel