如果字符串包含数组列表中的短语,则可以更快地进行迭代?
Faster way to iterate through if a string contains a phrase from array list?
我正在使用以下代码通过一组短语迭代我的字符串:
public boolean checkName(String nameInputed, ArrayList<String> phraseList) {
boolean match = false;
for (String phrase : phraseList) {
if (nameInputed.matches(".*" + phrase + ".*")) {
result = true;
}
}
return match ;
}
我想知道是否有更快的方法来检查大量短语。
那……
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
return phraseList.stream()
.filter(phrase -> nameInputed.contains(phrase))
.findFirst()
.isPresent();
}
如果你不想使用 stream API 那么...
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
for (String phrase : phraseList) {
if (nameInputed.contains(phrase)) {
return true;
}
}
return false;
}
编辑
正如@user16320675 在此
中建议的那样
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
return phraseList.stream()
.anyMatch(phrase -> nameInputed.contains(phrase));
}
我正在使用以下代码通过一组短语迭代我的字符串:
public boolean checkName(String nameInputed, ArrayList<String> phraseList) {
boolean match = false;
for (String phrase : phraseList) {
if (nameInputed.matches(".*" + phrase + ".*")) {
result = true;
}
}
return match ;
}
我想知道是否有更快的方法来检查大量短语。
那……
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
return phraseList.stream()
.filter(phrase -> nameInputed.contains(phrase))
.findFirst()
.isPresent();
}
如果你不想使用 stream API 那么...
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
for (String phrase : phraseList) {
if (nameInputed.contains(phrase)) {
return true;
}
}
return false;
}
编辑
正如@user16320675 在此
public boolean checkName(String nameInputed, java.util.List<String> phraseList) {
return phraseList.stream()
.anyMatch(phrase -> nameInputed.contains(phrase));
}