2016-05-26 8 views
0

基本的には、あるarraylistから別のarraylistに特定の順序で文字列を追加する必要があります。 お気に入りの両方を含む最初のアイテム、次に最初のお気に入り、次に2番目のアイテム。!arraylist.contains()は機能しませんか?

I'veは、最初のセット(問題なし)を追加することでこれを実行しようとし、その後、条件付きで第2のセットを追加して:originalList [i]を.contains(favorite1)& & secondList.contains(originalListNames [!私])

しかし、私はリピートを続けていた。私は次に、以下のコードを試してみましたが、私はまだ繰り返しを取得します。 theyreは正しい順序で追加され、追加されるべきものはすべて追加されます。しかし、彼らは本当に繰り返されるべきではありません、しかし、彼らは何をしているのですか?

ArrayList<String> dataSource = new ArrayList<>(); 
    for (int i=0; i < names.length; i++) { 
     if (categories[i].toLowerCase().contains(favorite1)) { 
      if (categories[i].toLowerCase().contains(favorite2)) { 
       dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]); 
      } 
     } 
    } 

    for (int i=0; i < names.length; i++) { 
     if (categories[i].toLowerCase().contains(favorite1)) { 
      if (dataSource.contains(names[i])) { 
      } 
      else{ 
       dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]); 
      } 
     } 
    } 

dataSourceは宛先であり、名前、日付、説明などはすべて同じインデックスに対応する文字列を含む配列であることに注意してください。 (つまり、名前[i]、日付[i]などにはすべて同じものが含まれています)

+0

ダグナビット.....すでに問題があります。私はdataSourceで部分文字列を検索する必要があります。文字列全体ではありません。私の理解から配列リスト[i] .toString()。contains(substring)? 上記のコードを短くすることができます。より基本的な手順でそれを実行しようとしていました。何らかの理由で!a.contains()がうまく動作しないと思っていたからです。 – daolsson

+0

おそらく 'Map'を試してみて –

+0

' contains() 'の代わりに' .eqauls() 'を試してみてください。 – Wenfeng

答えて

0

最終的にそれを得ました...助けてくれてありがとうございます。 ):

for (int i=0; i < names.length; i++) { 
     if (categories[i].toLowerCase().contains(favorite1)) { 
      boolean found=false; 
      for (int j=0; j < dataSource.size(); j++){ 
       if (dataSource.get(j).toString().indexOf(names[i]) >= 0) { 
        found = true; 
       } 
      } 
      if (!found){ 
       dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]); 
      } 
     } 
    } 
関連する問題