首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:返回从包含“塔吉特”的“短语”中的任何元素中删除的ArrayList。

Java:返回从包含“塔吉特”的“短语”中的任何元素中删除的ArrayList。
EN

Stack Overflow用户
提问于 2020-03-08 22:52:49
回答 2查看 81关注 0票数 0

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

以下是最初的问题:

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-08 23:47:14

倒计时是个好主意,indexOf()可以做这件事。您根本不需要的是内环,特别是内环中的return,因为这只是在第一次不匹配时放弃了工作。

代码语言:javascript
复制
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(),因为并不真正需要匹配的实际位置,因为知道它的存在就足够了:

代码语言:javascript
复制
if (phrases.get(i).contains(target)) {...
票数 1
EN

Stack Overflow用户

发布于 2020-03-08 23:27:12

这应该做,也不会给ConcurrentModificationException。

代码语言:javascript
复制
Iterator<String> iterator = phrases.iterator(); 
while (iterator.hasNext()) {
   if(iterator.next().contains(target)) {
      iterator.remove();
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60592838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档