首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除后的Java循环问题

删除后的Java循环问题
EN

Stack Overflow用户
提问于 2015-02-03 18:21:19
回答 4查看 71关注 0票数 0

所以我试图遍历数组的一些值,但同时在另一种方法中,我减少了数组中的元素。

例如,我有这样的名字:

苏西吉姆·曾傑瑞福斯蒂·曾傑瑞吉姆·福斯蒂·苏西吉姆·曾傑瑞·福斯蒂·苏西曾傑瑞吉姆·福斯蒂·苏西

然后我删除了苏西和福斯蒂,然后让曾傑瑞出现在元素2次,吉姆出现在元素0 3次,而不是一次。

代码语言:javascript
运行
复制
public String firstChoiceFrom (ArrayList<String> List)
{ 
      String name="";


       for(int i=0; i<List.size()-1; i++)
        {
            if(List.get(i).equals(ballot.get(i)))
            {
                 name = this.ballot.get(i);
            }
        }

       //String name = this.ballot.get(0);

        return name;

}
public int numberOfFirst(String name, ArrayList<String> List) {
    int m= 0;

    for (int i = 0; i < ballotList.size()-1; i++) {
        if (name.equals(ballotList.get(i).firstChoiceFrom(List))) 
        {
            m++;
        }
    }


    return m;
}

我可以删除元素,但似乎无法在删除后获取元素

EN

回答 4

Stack Overflow用户

发布于 2015-02-03 18:25:00

使用列表的迭代器,它将允许您遍历列表以及删除同一循环中的项。这也将确保不会发生不一致的情况。使用此方法list.iterator()

它也可以使用for循环来完成,

代码语言:javascript
运行
复制
while (iterator.hasNext())
{
    String value = iterator.next();
    if (<some check condition>)
    {
        iterator.remove();
    }
}

这将会更好地工作。

票数 0
EN

Stack Overflow用户

发布于 2015-02-03 19:59:24

我会提到另一种基于迭代器的方法,试图将已经给出的两个答案结合起来。一方面,使用迭代器将允许删除元素;另一方面,如果我们希望删除很多项(或所有项),那么使用ArrayList时,最好以相反的顺序遍历它,以最大限度地减少被删除项之后的项数(对于每次删除)。

在这种情况下,我认为您可以使用list.listIterator(list.size())而不是list.iterator(),然后在每次迭代时继续使用它的前一个()。不过,它只适用于列表。

票数 0
EN

Stack Overflow用户

发布于 2015-02-03 20:20:31

如果您使用的是Java8,我建议您删除ArrayList.removeIf。它使用起来非常简单,而且非常安全:

代码语言:javascript
运行
复制
myArrayList.removeIf(name -> name.contains("J"));

您发布的大多数代码都可以使用Java 8 streams进行简化。例如:

代码语言:javascript
运行
复制
public int numberOfFirsts(String name, ArrayList<String> list) {
    return list.stream()
        .filter(ballot -> name.equals(ballot.firstChoiceFrom(list)))
        .count();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28296484

复制
相关文章

相似问题

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