通过矩阵中的公共属性对值进行分组

时间:2016-02-06 20:31:55

标签: java arrays vector

我在根据原始矩阵的公共值将二维矩阵转换为二维阵列/列表/矢量时遇到了麻烦。

例如,我有一个有序的2d_array字符串(代码非常大),如下所示。

String [][] 2d_array  =  { {1922, ABC}, {1922, XPT}, {1954,ABC}, {2001, SSS}, {2001, asd}}; // this array has "N" row

我想转换/创建以下“输出”。

new_array = {{1922, ABC, XPT}, {1954, ABC}, {2001, SSS, asd}};

在这个新数组中,无论列数多长都没关系,只要它们都在相同的行中,并且具有相应的“数字”/日期/索引/等。

1 个答案:

答案 0 :(得分:2)

尝试:

Map<String, Set<String>> res = 
  Arrays.stream(2d_array)
        .collect(groupingBy(a -> a[0], mapping(a -> a[1], toSet())));

如果您觉得阵列更方便,可以将此地图转换为所需的数组。