找出String中是否包含数组中的值

时间:2014-04-22 03:49:47

标签: java arrays string netbeans

是否有更短的方法来确定您的字符串是否包含String []中的任何值?

这是我的代码:

String s = "Hello world! My name is Bao.";
String[] arr = new String[]{"o", "!", "-", "y", "z"};
for (String item : arr) {
    if (s.contains(item)) {
        System.out.println("String s contains: " + item);
    } else {
        System.out.println("String s doesn't contains: " + item);
    }
}

有没有更短的方法呢?我不想为此使用for循环。

当数组包含4000多个字符串时,它可能会很慢。

1 个答案:

答案 0 :(得分:0)

对于大型字符串数组,首先将数组和目标字符串转换为HashSet会更快。成为Set会删除重复的字符,而Hash将会非常快速地进行比较。然后你可以做几个快速减法来得到答案:

String s = "Hello world! My name is Bao.";
String[] arr = new String[] { "o", "!", "-", "y", "z" };

Set<String> sSet = new HashSet<String>(Arrays.asList(s.split("(?!^)")));
Set<String> arrSet = new HashSet<String>(Arrays.asList(arr));

Collection<String> notFound = CollectionUtils.subtract(arrSet, sSet);
Collection<String> found = CollectionUtils.subtract(arrSet, notFound);