我想删除任何包含目标字符串的元素。目标可以是完整的元素/单词,也可以是单词中的一个字母,所以我在ArrayList中的每个元素中的每个字母都有问题。注释中的代码是我以前采用的一种方法。
以下是最初的问题:

public static ArrayList<String> removeIt(ArrayList<String> phrases, String target) {
/**
for (int i = phrases.size()-1; i >= 0; i--) {
for (int p = 0; p < phrases.get(i).length(); p++) {
if (phrases.get(p) == target) {
phrases.remove(i);
}
}
}
*/
for (int i = phrases.size()-1; i >= 0; i--) {
for (int p = 0; p < phrases.get(i).length(); p++) {
int index = phrases.indexOf(target);
if (index == -1) {
return phrases;
} else {
phrases.remove(i);
}
}
}
return phrases;
}发布于 2020-03-08 23:47:14
倒计时是个好主意,indexOf()可以做这件事。您根本不需要的是内环,特别是内环中的return,因为这只是在第一次不匹配时放弃了工作。
public static ArrayList<String> removeIt(ArrayList<String> phrases, String target) {
for (int i = phrases.size()-1; i >= 0; i--) {
if (phrases.get(p).indexOf(target) != -1) {
phrases.remove(i);
}
}
return phrases;
}移除的条件可以使用contains(),因为并不真正需要匹配的实际位置,因为知道它的存在就足够了:
if (phrases.get(i).contains(target)) {...发布于 2020-03-08 23:27:12
这应该做,也不会给ConcurrentModificationException。
Iterator<String> iterator = phrases.iterator();
while (iterator.hasNext()) {
if(iterator.next().contains(target)) {
iterator.remove();
}
}https://stackoverflow.com/questions/60592838
复制相似问题