Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用哪种数据结构存储矩阵对?_Java_Opencv_Data Structures_Mat - Fatal编程技术网

Java 使用哪种数据结构存储矩阵对?

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(); 显然,由于参数太多,我不能

我需要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();
显然,由于参数太多,我不能使用
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数组是对象的一维数组。每个对象本身就是一个数组。这太棒了!谢谢