我有一个很大的整数矩阵。
因此,使用一个大的矩阵
int
int[][] ints = new int[100][500_000]; // uses about 200 MB each.
如果你有
List<List<Integer>>
每个都将使用大约8倍的容量。
我运行了以下命令
-Xmx300m
public static void main(String... args) {
int[][] ints = new int[100][500_000];
for (int[] arr : ints) {
Arrays.fill(arr, 1);
}
}
如果martix非常稀疏,请使用
Maps
我可以帮忙。我建议使用这样的包装器类。
import java.util.HashMap;
import java.util.Map;
public class SparseMatrix<T> {
final Map<Integer, T>[] maps;
final int rows, columns;
public SparseMatrix(int rows, int columns) {
maps = new Map[rows];
for (int i = 0; i < rows; i++)
maps[i] = new HashMap<>();
this.rows = rows;
this.columns = columns;
}
public int getRows() {
return rows;
}
public int getColumns() {
return columns;
}
public T get(int r, int c) {
return maps[r].get(c);
}
public void set(int r, int c, T t) {
maps[r].put(c, t);
}
}
谷歌建议更多功能库
https://java-matrix.org/