2017-04-04 10 views
3

文字列で指定された文字列が見つかったかどうかをチェックしたい。 たとえば、私が持っている場合:私は私のカウントが値3を持つ参照する必要がありますので、私は私のリスト内の文字列で3試合を見つけたのでList/ArrayListに文字列の文字が含まれているかどうかチェックするJava

ArrayList<String> list = new ArrayList(); 
list.add("a"); 
list.add("e"); 
list.add("i"); 
list.add("o"); 
list.add("u"); 

String str = "aeo"; 

for (int i = 0; i < list.size(); i++) 
    for (int j = 0; j < str.length(); j++) { 
     if (list.get(i).equals(str.charAt(j))) 
      count++; 
    } 
System.out.println(count); 

strのは、私の手紙のリストに含まれています。 とにかく、カウントは値0で出力されます。 主な考え方は、strがstrの文字の順序に関係なくリスト内にあるかどうかをチェックする必要があることです。

+1

「リスト」ではなく、なぜ「リスト」を持っていますか?そして、個々の文字を取得して 'list.contains(strChar);'を使うために 'str'文字列を繰り返し処理するほうがずっと簡単でしょうか? – Tom

+1

あなたはそうです:)。文字列の代わりに文字を比較するには、文字を使用する方がずっと簡単です。 – lexraid

答えて

5

StringCharacterを比較しているので、equalsfalseを返します。

ではなくcharの比較:

for (int i = 0; i < list.size(); i++) { 
    for (int j=0; j < str.length(); j++) { 
     if (list.get(i).charAt(0) == str.charAt(j)) { 
      count++; 
     } 
    } 
} 

これはあなたのlistは単一の文字String Sが含まれていると仮定します。その場合はところで、あなたはchar[]で置き換えます:

char[] list = {'a','e','i','o','u'}; 
for (int i = 0; i < list.length; i++) { 
    for (int j = 0; j < str.length(); j++) { 
     if (list[i] == str.charAt(j)) { 
      count++; 
     } 
    } 
} 
1

文字列は、文字に等しいされていないので、あなたは、文字列に文字を変換する必要があります。

if (list.get(i).equals(String.valueOf(str.charAt(j)))) 

またはcharの文字列とそのようにそれを比較:

if (list.get(i).getCharAt(0)==str.charAt(j)) 
1

あなたはインラインコメントを下記に示すように、1行に答えを得るためにstreamsを使用することができます。

ArrayList<String> list = new ArrayList(); 
//add elements to list 

String str = "aeo";//input string 

//split str input string with delimiter "" & convert to stream 
long count = Arrays.stream(str.split("")).//splt the string to array 
    filter(s -> list.contains(s)).//filter out which one matches from list 
    count();//count how many matches found 
System.out.println(count); 
0

はい、これは正しいです。ありがとう。そして、私もちょうど今チェックして、私は私のリストを作ることができることを見てきました:

ArrayList<Character> list ; 

代わりの

ArrayList<String> list ; 
1

文字列に文字を変換します

list.get(i).equals(String.valueOf(str.charAt(j))) 

正しい構文文字を文字列に変換する:

list.get(i).charAt(0) == str.charAt(j) 

list.get(i).getCharAt(0)==str.charAt(j)は、Jensの答えで書かれているようには機能しません。

関連する問題