用于存储矩阵对的数据结构是什么?

时间:2015-10-19 17:15:47

标签: java opencv data-structures mat

我需要一个容器,用于2个不同大小的矩阵。

这样的事情:

import org.opencv.core.Core;
import org.opencv.core.Mat;


List<Mat, Mat> listOfMats = new ArrayList<Mat, Mat>(); 

显然,由于参数的数量,我无法使用ArrayList

附加信息:两个参数数量相等。每对矩阵都取决于彼此。 如果您希望保持高效,那么您将在此使用哪种数据结构。如果我需要在存储空间和运行时间之间做出决定。我更喜欢第一个。

提前致谢

2 个答案:

答案 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>();