0

s の2 次元配列にデータがありますObject。重複データを結合するアルゴリズムを探していますが、私のアルゴリズムは重複データを失います。また、すべての行を一番上に保持するため、私のデータは次のとおりです。

ECE 201 電気およびコンピュータ工学 I 2.6666666666666665

BIO 101 生物学 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 イントロ バイオメディカル エンジニアリング 3.6

ECE 200 イントロ電気およびコンピュータ工学 3.5

BIO 100 イントロ生物学 2.2

CS 101 コンピュータサイエンス I 3.75

AE 101 航空宇宙工学 I 1.6666666666666667

BE 100 イントロ バイオメディカル エンジニアリング 1.2

しかし、それはsで満たされてい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]);
        }
      }
    }
  }
}

私のデータは次のようになります。

見つかった!ECE 201 ECE 201 2.6666666666666665

見つかった!バイオ 101 バイオ 101 2.0

見つかった!CS101 CS101 3.5

見つかった!CS101 CS101 3.5

見つかった!CS101 CS101 3.5

見つかった!AE101 AE101 2.5

見つかった!AE101 AE101 2.5

見つかった!ビー101 ビー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

見つかった!ECE200 ECE200 3.5

見つかった!バイオ 100 バイオ 100 2.2

見つかった!CS101 CS101 3.75

見つかった!AE 101 AE 101 1.6666666666666667

見つかった!BE 100 BE 100 1.2

//発見!それが正しい出力であることを確認するためだけです。

このアルゴリズムを改善して、望ましい結果を得るにはどうすればよいですか?

4

1 に答える 1

1

アルゴリズムを記述する代わりに、セットまたはハッシュ テーブルを使用できます。

セットの方が適しています。複製は許可されません。詳細については、http: //docs.oracle.com/javase/tutorial/collections/interfaces/set.htmlを参照してください。

ハッシュ テーブルは、セットを実装する方法です。これらを使用するには、ハッシュ関数を記述してデータをハッシュ キーに変換する必要があります。次に、そのキーを使用してテーブルにインデックスを付け、ハッシュされていない値をそこに格納します。

于 2012-12-05T15:21:14.577 に答える