检查List / ArrayList是否包含字符串Java的字符

时间:2017-04-04 09:28:50

标签: java string character

我想检查在给定列表中是否找到字符串。 例如,如果我有:

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在我的信件列表中找到,所以我必须看到我的计数值为3,因为我在列表中找到了3个匹配字符串。 无论如何,count打印值为0。 主要思想是我必须检查列表中是否找到str,无论str中字母的顺序如何。

5 个答案:

答案 0 :(得分:5)

您正在将StringCharacter进行比较,因此equals会返回false

比较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。顺便说一句,如果是这种情况,你可以用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 :(得分:1)

字符串不等于某个字符,因此您必须将该字符转换为字符串。

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

或字符串到char并比较它:

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

答案 2 :(得分: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);

答案 3 :(得分: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&#39;中所写的那样工作。答案。

答案 4 :(得分:0)

是的,这是对的。谢谢你。我现在也检查过,看到我可以列出我的名单:

ArrayList<Character> list ;

而不是

ArrayList<String> list ;