查找数组中的字符串是否存在于另一个数组中

时间:2013-07-31 14:31:02

标签: java arrays string

我有一个数组String[] questions={"adorable", "able", "adventurous"};,我还有一个包含所有形容词的数组t []。我想在数组t []中找到可爱,干练和冒险的字样。到目前为止,我有这个行代码,但它似乎没有工作。有人可以帮帮我吗?

    String u = sn.nextLine();
    String[] t = u.split(" ");
    for (y = 0; y <= question.length; y++) {
        for (int w = 0; w < t.length; w++) {
            if (t[w].equals(question[y])) {
                System.out.print(t[w] + " ");
                break;
            }
        }
    }

4 个答案:

答案 0 :(得分:4)

这个怎么样:

Set<String> s1 = new HashSet<String>(Arrays.asList(t));
Set<String> s2 = new HashSet<String>(Arrays.asList(questions));

s1.retainAll(s2);

现在s1包含t中也出现在question中的所有字符串。


例如:

String[] t = "Hello, world! I am adventurous and adorable!".split("\\W+");
String[] questions = {"adorable", "able", "adventurous"};

Set<String> s1 = new HashSet<String>(Arrays.asList(t));
Set<String> s2 = new HashSet<String>(Arrays.asList(questions));

s1.retainAll(s2);
System.out.println(s1);
[adventurous, adorable]

答案 1 :(得分:1)

做:

for (int y = 0; y < question.length; y++) {

}

而不是<=。问题是由于您没有question[question.length]元素。

另外,我没有看到您声明y变量的位置。

更新:以下是完整示例:

String[] questions = {"adorable", "able", "adventurous"};
String u = "able adorable asd";
String[] t = u.split(" ");
for (int y = 0; y < questions.length; y++) {
   for (int w = 0; w < t.length; w++) {
       if (t[w].equals(questions[y])) {
           System.out.print(t[w] + " ");
           break;
       }
    }
}

打印:

adorable able

答案 2 :(得分:1)

for(String question: questions){

    for(String word: t){

        if(question.equals(word)){

             //Do somethin

        }
    }

}

答案 3 :(得分:0)

另一种解决方案是使用数据结构,例如ArrayList或LinkedList,而不是数组。

这样,您只需调用contains()。