有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将重复的行组合在一个数组中,同时保留那些没有任何重复的行

我有一个2d数组中的数据,由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

但是它被nulls填充。我使用以下算法:

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

//发现了!只是为了确保它是正确的输出

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


共 (1) 个答案

  1. # 1 楼答案

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

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

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