gpt4 book ai didi

Java动态矩阵结构

转载 作者:行者123 更新时间:2023-11-29 07:44:34 24 4
gpt4 key购买 nike

我想知道在 Java 中实现矩阵的最佳方法,其中必须轻松添加/删除列和行。

double[][] matrix 这样的东西在删除列/行时看起来很重。

我进行了一些搜索,但找不到处理此问题的设计模式(或类似)。你有什么建议吗?我不是在寻找图书馆,而是在寻找更多有关所需内容的指南。我在考虑混合使用列表和 map ,但我不确定这是最有效的。

link提供了一点帮助,但我确信有一个设计模式,或者至少是一个很好的方法。

这里有一些更多的规范:我希望矩阵一般有 300x300 大。虽然我需要做很多操作(我正在做一个启发式更新它很多,数百次/秒),因此我不能每次我想更新它时浏览它。没有最大尺寸,但我不希望它超过 5000x5000。

最佳答案

一个可能的简单解决方案是使用列表的列表,例如

int nRows = 8, nCols = 4;
List<List<Double>> matrix = new ArrayList<>(nRows);
for (int k = 0; k < nRows; k++) {
matrix.add(new ArrayList<>(nCols));
}

在这种情况下,添加/删除行会很容易,但添加/删除列会有点棘手。

void removeRow(ArrayList<ArrayList<Double>> matrix, int rowIndexToRemove) {
matrix.remove(rowIndexToRemove);
}

void removeColumn(ArrayList<ArrayList<Double>> matrix, int coulmnIndexToRemove) {
for (ArrayList<Double> row : matrix) {
row.remove(coulmnIndexToRemove);
}
}

void addRow(ArrayList<ArrayList<Double>> matrix, int rowIndexWhereInsert, ArrayList<Double> newRow) {
matrix.add(rowIndexWhereInsert, newRow);
}

void addColumn(ArrayList<ArrayList<Double>> matrix, int columnIndexWhereInsert, ArrayList<Double> newColumn) {
for (int k = 0; k < matrix.size(); k++) {
ArrayList<Double> row = matrix.get(k);
row.add(columnIndexWhereInsert, newColumn.get(k));
}
}

关于Java动态矩阵结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com