在二维数组中组合重复的行,同时保持没有任何重复的行

时间:2012-12-05 15:17:21

标签: java null multidimensional-array

我在Object s的二维数组中有数据。我正在寻找一种组合重复数据的算法,但我的算法失去了重复的算法。此外,它将所有行保留在顶部,因此,我的数据是:

  

ECE 201电气与计算机工程I 2.6666666666666665

     

BIO 101 Biology I 2.0

     

CS 101计算机科学I 3.5

     

AE 101航空航天工程I 2.5

     

BE 101生物医学工程I 2.0

     

CS 101计算机科学I 2.0

     

CS 102计算机科学II 3.0

     

BE 100 Intro Biomedical Engineering 3.6

     

ECE 200简介电气和计算机工程3.5

     

BIO 100 Intro Biology 2.2

     

CS 101计算机科学I 3.75

     

AE 101航空航天工程I 1.6666666666666667

     

BE 100 Intro Biomedical Engineering 1.2

但它充满了null s。我使用以下算法:

for (int i = 0; i< finalData.length; i++)
{
  if (finalData[i][1] != null)
  {
    String first = (String)finalData[i][1];
    for (int j = i; j< finalData.length; j++)
    {
      if (finalData[j][1]!= null)
      {
        String second = (String)finalData[j][1];
        if (first.equals(second))
        {
          double one = (double)finalData[i][6];
          double two = (double)finalData[i][6];
          finalData[i][7] = (one + two)/2;
          System.out.println("found!\t" + first + "\t" + second + "\t" +  finalData[i][7]);
        }
      }
    }
  }
}

我的数据变为:

  

发现! ECE 201 ECE 201 2.6666666666666665

     

发现! BIO 101 BIO 101 2.0

     

发现! CS 101 CS 101 3.5

     

发现! CS 101 CS 101 3.5

     

发现! CS 101 CS 101 3.5

     

发现! AE 101 AE 101 2.5

     

发现! AE 101 AE 101 2.5

     

发现! BE 101 BE 101 2.0

     

发现! CS 101 CS 101 2.0

     

发现! CS 101 CS 101 2.0

     

发现! CS 102 CS 102 3.0

     

发现! BE 100 BE 100 3.6

     

发现! BE 100 BE 100 3.6

     

发现! ECE 200 ECE 200 3.5

     

发现! BIO 100 BIO 100 2.2

     

发现! CS 101 CS 101 3.75

     

发现! AE 101 AE 101 1.6666666666666667

     

发现! BE 100 BE 100 1.2

//找到了!只是为了确保它是正确的输出。

如何改进此算法以产生所需的结果?

1 个答案:

答案 0 :(得分:1)

您可以使用集合或哈希表,而不是编写算法。

套装是你更好的选择;他们不允许重复。您可以在这里阅读更多相关信息: http://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

哈希表是一种实现集合的方法。要使用这些,您需要编写散列函数将数据转换为散列键​​,然后您将使用该键索引表并在那里存储未散列的值。