2016-05-19 2 views
1

以下のコードはすべてxyなどの文字列を取得して配列に追加するタスクです。実行時に配列をチェックする方法特定の値を含む場合

私はそれらをすべて配列に追加できますが、配列に挿入しようとしている変数がすでに存在していれば、挿入しないでください。

ArrayList vars = new ArrayList(); 
for(int i = 0; i < temp.length; i++) 
    for(int j = 1; j < temp[0].length - 1; j++) 
    { 
     String text_to_parse = temp[i][j]; 
     Pattern y = Pattern.compile("[?]\\w[,)]"); // find the values in pattern of ?x, or ?x) 
     Matcher z = y.matcher(text_to_parse); 
     while(z.find()) 
     { 
      String to_add = z.group(); 
      to_add = to_add.replaceAll("[\\,\\) ]",""); 
      // logic required here if to_add exist in vars then do no insert else insert 

     } 
    } 

私はvars.containを使用してみましたが、それはそれは見つかったすべての値を追加します。

+0

文字列の順序を守ることは本当に重要ですか?さもなければ 'vars'を' java.util.Set'の実装(例えば 'java.util.HashSet')に変更することは有用であることが分かります。これにより、 '.contains()'のパフォーマンスが向上します。これは、いくつかのエントリを管理することで明白にならないかもしれませんが、適切なデータ構造の使用に慣れることは、一般的に多くの役に立ちます。 (大きなセットのエントリについては、Pre-existenceを簡単に検出するための 'Set'と、順序を保持するための' List'実装を考慮することもできます) – rpy

+0

そして、BTW:ハードコードされた実装ではなく、変数にインタフェースタイプを使用してください。あなたの場合、次のように書くことができます: 'List vars = new ArryList()' – rpy

+0

@rbentoは編集に感謝しますが、実際には?xと?yの後に疑問符が付いています。疑問符は、文字列 –

答えて

1

varsに含まれていない場合に試してください。同じように!演算子を使用する

if (!(vars.contains(item))) 
    //add the item 
else 
    //do nothing 
+0

それは働いた!私は一日中これをひねっていた...ありがとう兄弟。 –

関連する問題