在矩阵中查找唯一元素

时间:2011-04-20 02:07:29

标签: java hashset

我正在处理一个名为matrix的2D数组。我需要检索数组中的唯一元素。

无A B C G F
y1 a1 b2 c1 g1 f1
y2 a1 b1 c2 g2 f1
y3 a2 b1 c2 g1 f2
y4 a1 b2 c2 g2 f1
y5 a2 b2 c1 g1 f2

例如,对于A列,我应该得到a1和a2。对于B,b1和b2,依此类推。

我尝试了不同的东西,但迄今为止没有任何工作。这是我放在一起的:

   public void UniqueElement(String line){

       List tempList = Arrays.asList(line);

       Set set = new HashSet(tempList);
       System.out.println("");
       System.out.printf("%s", set);

   }//UniqueElement Method

这是我得到的:

[零,A,B,C,G,F] [Y1,A1,B2,C1,G1,F1] [Y2,A1,B1,C2,G2,F1] [Y3,A2,B1,C2,G1,F2] [Y4,A1,B2,C2,G2,F1]

有人会建议另一种尝试在我的矩阵中挑出独特项目的方法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以执行嵌套的foreach循环并遍历数组中的元素。当你去,在列表中存储“新”或未看到的元素。要确定您是否看过某个元素,请每次遍历列表,如果匹配,请移至下一个数组元素。否则(不匹配),将元素添加到列表并移动到下一个数组元素。

这个算法非常蛮力,不能很好地扩展,但它给你一个独特元素的列表。

答案 1 :(得分:0)

如果你可以节省内存......循环每个项目并将其用作Map的键,每次遇到键时都会增加值。完成后,循环遍历Map并输出值为1的键。

事实上,由于您只关心唯一性,因此可以使用布尔值作为值。 true = unique,false = not unique