是否有更短的方法来确定您的字符串是否包含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多个字符串时,它可能会很慢。
答案 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);