我需要一个容器,用于2个不同大小的矩阵。
这样的事情:
import org.opencv.core.Core;
import org.opencv.core.Mat;
List<Mat, Mat> listOfMats = new ArrayList<Mat, Mat>();
显然,由于参数的数量,我无法使用ArrayList
。
附加信息:两个参数数量相等。每对矩阵都取决于彼此。 如果您希望保持高效,那么您将在此使用哪种数据结构。如果我需要在存储空间和运行时间之间做出决定。我更喜欢第一个。
提前致谢
答案 0 :(得分:1)
二维数组(列表)通常编码如下。
List<Mat, List<Mat>> listOfMat = new ArrayList<Mat, List<Mat>>();
如果您经常遇到内部列表只有一个条目的情况, 你可以直接存储Mat,但每次都要检查哪种类型 对象是:
List<Mat, Object> listOfMat = new ArrayList<Mat, Object>();
在一种情况下,对象是另一种情况下的List,它只是Mat。您可以查看
if (obj instanceof Mat) {
// it i sdirectly a Mat
} else {
// it is an List<Mat>
}
答案 1 :(得分:1)
Java中没有配对元素。所以自己写一个:
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>();