我有一个 6 行 2 列的二维数组,我想根据第一列中的值对第二列中的值求和。我不知道下一步该怎么做才能将我保存的值传输到排序数组中。
基本上我想改变这个:
{ 1, 5},
{ 1, 10 },
{ 2, 5},
{ 2, 15},
{ 2, 10},
{ 3, 6},
进入此:
{ 1, 15},
{ 2, 30},
{ 3, 6},
这是到目前为止我的代码,因此我们将不胜感激。
int [][] sortedArray = new int[3][2];
int [][] array = {
{ 1, 5},
{ 1, 10 },
{ 2, 5},
{ 2, 15},
{ 2, 10},
{ 3, 6},
};
int column1 = 0;
int column2 = 0;
for(int i = 0; i < array.length; i++)
{
array[i][0] = column1;
while(array[i][0] == column1)
{
column2 += array[i][1];
}
}
最佳答案
如果您不知道第一列中唯一值的数量,您应该以通用方式执行此操作。
// Build a map with
final Map<Integer, Integer> sortedMap = new LinkedHashMap<>();
for (int[] ints : array) {
if (sortedMap.containsKey(ints[0])) {
sortedMap.put(ints[0], sortedMap.get(ints[0]) + ints[1]);
} else {
sortedMap.put(ints[0], ints[1]);
}
}
int[][] sortedArray = new int[sortedMap.size()][2];
int i = 0;
// Convert the map to 2D array
for (Integer integer : sortedMap.keySet()) {
sortedArray[i][0] = integer;
sortedArray[i][1] = sortedMap.get(integer);
i++;
}
关于java - 添加第二列与第一列中的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215485/