有没有一种更短的方法来确定字符串是否包含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+个字符串时,它可能会很慢。
对于大型字符串数组,首先将数组和目标字符串转换为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);