java - 合并二维数组中的重复行,同时保留没有任何重复项的行

标签 java null multidimensional-array

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

ECE 201 Electrical and Computer Engineering I 2.6666666666666665

BIO 101 Biology I 2.0

CS 101 Computer Science I 3.5

AE 101 Aerospace Engineering I 2.5

BE 101 Biomedical Engineering I 2.0

CS 101 Computer Science I 2.0

CS 102 Computer Science II 3.0

BE 100 Intro Biomedical Engineering 3.6

ECE 200 Intro Electrical and Computer Engineering 3.5

BIO 100 Intro Biology 2.2

CS 101 Computer Science I 3.75

AE 101 Aerospace Engineering I 1.6666666666666667

BE 100 Intro Biomedical Engineering 1.2

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

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]);
        }
      }
    }
  }
}

我的数据变成:

found! ECE 201 ECE 201 2.6666666666666665

found! BIO 101 BIO 101 2.0

found! CS 101 CS 101 3.5

found! CS 101 CS 101 3.5

found! CS 101 CS 101 3.5

found! AE 101 AE 101 2.5

found! AE 101 AE 101 2.5

found! BE 101 BE 101 2.0

found! CS 101 CS 101 2.0

found! CS 101 CS 101 2.0

found! CS 102 CS 102 3.0

found! BE 100 BE 100 3.6

found! BE 100 BE 100 3.6

found! ECE 200 ECE 200 3.5

found! BIO 100 BIO 100 2.2

found! CS 101 CS 101 3.75

found! AE 101 AE 101 1.6666666666666667

found! BE 100 BE 100 1.2

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

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

最佳答案

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

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

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

关于java - 合并二维数组中的重复行,同时保留没有任何重复项的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726384/

相关文章:

java - 如何将一个 bean 注入(inject)另一个基于 getter 的 bean

java - JUnit 4.8 需要什么 java 版本

java - Java 中 array.length() 的内部代码是什么?

java - 从java中的类复制值

非均匀多维数组上的 C++ 迭代

php - 来自数据库 PHP 的数组

java - 为什么我的 Java 方法不能更改传递的变量?

typescript - 如何使用括号表示法检查 typescript 中的无效性

flutter - 在空 flutter 上调用getter 'text'

Python:以分数形式缩小/扩展二维数组