Java 使用哪种数据结构存储矩阵对?
我需要2个不同大小的矩阵容器 大概是这样的:Java 使用哪种数据结构存储矩阵对?,java,opencv,data-structures,mat,Java,Opencv,Data Structures,Mat,我需要2个不同大小的矩阵容器 大概是这样的: import org.opencv.core.Core; import org.opencv.core.Mat; List<Mat, Mat> listOfMats = new ArrayList<Mat, Mat>(); import org.opencv.core.core; 导入org.opencv.core.Mat; List listOfMats=new ArrayList(); 显然,由于参数太多,我不能
import org.opencv.core.Core;
import org.opencv.core.Mat;
List<Mat, Mat> listOfMats = new ArrayList<Mat, Mat>();
import org.opencv.core.core;
导入org.opencv.core.Mat;
List listOfMats=new ArrayList();
显然,由于参数太多,我不能使用ArrayList
附加信息:两个参数数量相等。每对矩阵相互依赖。
如果您想保持高效,您会在这里使用哪种数据结构。如果我需要在存储空间和运行时之间做出决定。我更喜欢第一个
提前感谢二维数组(列表)通常编码如下
List<Mat, List<Mat>> listOfMat = new ArrayList<Mat, List<Mat>>();
List listOfMat=new ArrayList();
如果您经常遇到内部列表只有一个条目的情况,
您可以直接存放垫子,但每次都要检查哪种类型
目标是:
List<Mat, Object> listOfMat = new ArrayList<Mat, Object>();
List listOfMat=new ArrayList();
在一种情况下,对象是一个列表,而在另一种情况下,它只是一个Mat。你可以跟我核对一下
if (obj instanceof Mat) {
// it i sdirectly a Mat
} else {
// it is an List<Mat>
}
if(Mat的obj实例){
//这是我直接用的垫子
}否则{
//这是一份清单
}
Java中没有pair元素。所以你自己写一个:
public class MatrixPair {
public Mat mat1;
public Mat mat2;
public MatrixPair(mat1, mat2) {
this.mat1 = mat1;
this.mat2 = mat2;
}
}
现在存储在一个数组或ArrayList中:
List<MatPairs> matPairs = new ArrayList<MatPair>();
List matPairs=new ArrayList();
您的描述不充分。“两个参数的数量相等”是什么意思。“每对矩阵相互依赖”这一事实对结构有什么影响?这是一个n维矩阵的二维数组吗?Mat似乎是一个密集阵列。你想把它们成对地组合起来?稠密的或不稠密的。这是主要问题,。这取决于数据。如果没有给出关于外部二维阵列分布的KNOWOLEDGE,这是不可能回答的。2个矩阵总是相互关联的。这意味着您不一定需要列表作为值。是的,它是一个n维矩阵的二维数组。我不确定你说的密集矩阵是什么意思,密集矩阵还是稀疏矩阵。密集2d阵列是使用每个可能组合的阵列。像棋盘一样,稀疏数组是一种不使用大多数组合的数组,例如城市坐标。desne数组使用2d数组(如int[])存储。使用可变大小(链接)列表的稀疏数组。对角线是一维的。所以我会用一双[]。一个对数组,其中每对都包含一个MatA,如果内部列表只有一个条目,则包含一个MatBEven?通常情况下,内部列表只有一个条目。这就是为什么它们是成对的,而这个内部元素是一个列表。首先阅读java中的2d数组。这与C或C++完全不同。java中的2d数组是对象的一维数组。每个对象本身就是一个数组。这太棒了!谢谢