2
node_marked_array.add(strings[0]);

for (int i = 0; i < strings.length; i++) {
    for (int a = 0; a < strings2.length; a = a + 2) {
        if (node_marked_array.get(i).equals(strings2[a])) {
            if (!node_marked_array.get(i).equals(strings2[a + 1])) {
                //    System.out.println("marked node: " + node_marked_array.get(i) + "=" + strings2[a] + ", added node " + strings2[a+1]);
                node_marked_array.add(strings2[a + 1]);
            }
        }
    }
}

strings2私は、それぞれが次の要素の名前の配列を持っています:

1, 2, 1, 3, 2, 3, 2, 4, 3, 2, 5, 5, 2,

そして、私のコードは配列を通過することになっています。たとえば、配列内の要素のいずれかと一致する場合は、strings:{1,2,3,4,5}と呼ばれるstrings2各偶数要素の要素と一致します。上記の配列の要素をチェックして、i+1要素がマークされた配列に既に追加されているかどうかを確認し、そうでない場合は追加します。ただし、値が重複していても表示されます

if (!node_marked_array.get(i).equals(strings2[a + 1]))

出力:1 2 3 3 4 2 5 2 5 5

4

2 に答える 2

8

を使用しSetます。配列は、この問題に対して不適切なデータ型です。

それが必要な場合は、セットを構築した.toArray()に配列を返すメソッドが含まれています。

于 2012-12-04T19:49:43.147 に答える
4

を使用しSetます。あなたのコードから始めて:

HashSet<String> noDuplicate = new HashSet<String>();
for(int i=0;i<strings.length;i++)
{
  for(int a=0;a<strings2.length;a++)
  {
    if(strings[i].equals(strings2[a]))
    {
      noDuplicate.add(strings[i]);
    }
  }
}

// And then if you need an array:
String[] noDupArray = new String[noDuplicate.size()];
noDuplicate.toArray(noDupArray);
于 2012-12-04T19:52:42.413 に答える