例如,输入为:(行,列,权重),例如(0,2,10.0),(1,2,3.0),(2,1,11.3),(1,2,15.0)] >
结果应该是:
和已更新)0 1 2
0。 。 10.0
1。 。 15.0
2。 11.3。
(数据将同时为已插入
我注意到,仅使用Java中Arraylist
提供的add(index i,elements e)或set()方法无法完成此操作。例如,因为当我尝试在插入(0, 0,3.0)。例如输入是:(行,列,权重),例如(0,2,10.0),(1,2,3.0),(2,1,11.3),(1,2,15.0)结果应为:0 1 2 0。 。 10.0 1。 。 15.0 2。 11.3。 (数据...ArrayList
最简单的操作是根据需要添加null
元素以增加大小,然后再尝试将元素设置为给定索引。private final List<List<Double>> matrix = new ArrayList<>();
public OptionalDouble set(int i, int j, double value) {
while (i >= matrix.size()) matrix.add(new ArrayList<>());
List<Double> row = matrix.get(i);
while (j >= row.size()) row.add(null);
Double old = row.set(j, value);
return (old == null) ? OptionalDouble.empty() : OptionaDouble.of(old);
}
public OptionalDouble get(int i, int j) {
List<Double> row = (i < matrix.size()) ? matrix.get(i) : Collections.emptyList();
Double value = (j < row.size()) ? row.get(j) : null;
return (value == null) ? OptionalDouble.empty() : OptionalDouble.of(value);
}