首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存储矩阵并在java中进行比较

存储矩阵并在java中进行比较
EN

Stack Overflow用户
提问于 2015-07-22 16:50:03
回答 3查看 168关注 0票数 0

我需要存储许多矩阵,然后通过检索添加的最后一个矩阵和前一个矩阵来比较其中的一些矩阵。

我使用以下方法创建这些矩阵:

代码语言:javascript
代码运行次数:0
运行
复制
int[][] matrix = new int[10][10];

我的矩阵只有0,1s和2s。我想根据每个职位的值比较矩阵。在我的例子中,两个矩阵是不同的,只要至少一个位置有不同的值。每个矩阵都是根据通过反应检测到的元素来创建的。没有移动的元素是2s,添加的元素是1s,没有任何内容的元素是0。

例如:

代码语言:javascript
代码运行次数:0
运行
复制
1 2 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0

代码语言:javascript
代码运行次数:0
运行
复制
1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

就不一样了。

存储的矩阵数不是固定的。如果我已经创建了10个矩阵,那么最有效的存储和比较它们的方法是什么?

我在StackOverFlow和其他论坛上搜索过这个,但是找不到答案

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-22 17:12:45

由于矩阵中的许多(可能大多数)条目都是零,因此按原样存储它们是效率低下的。您需要使用稀疏矩阵表示。下面是一个非常详尽的矩阵库列表,其中许多允许稀疏表示。

它们中的大多数还将有一个equals()方法,您可以重写该方法以适应您的定义(如果它们的定义已经与您的定义相同)。

最后,由于只需要比较最后两个矩阵,所以需要某种队列。我会维护一个列表,并为此使用一个ListIterator

票数 1
EN

Stack Overflow用户

发布于 2015-07-22 17:08:05

由于您没有提供任何代码,我只能帮助您的设计。因此,以下是一些设计技巧:

  1. 将矩阵存储在二维数组中。 例:int[][] matrix = new int[5][3];,这给了你一个5x3矩阵。
  2. 由于您不知道您将有多少矩阵,将它们添加到数组中。 例:ArrayList<int[][]> matrices = new ArrayList<>();
  3. 我不知道比较是什么意思,但是,您可以使用嵌套的for循环,通过逐个检索数组列表中的矩阵来进行比较。
票数 0
EN

Stack Overflow用户

发布于 2015-07-22 17:16:58

我会编写一个不同的类Matrix,并重写equalshashcode方法。

如果矩阵中的大多数值为零,则可能需要使用稀疏矩阵表示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31569320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档