相关疑难解决方法(0)

我们是否需要在ArrayList上使用迭代器?

昨天,当我在回答问题时使用迭代器和删除时收到ConcurrentModificationException错误我添加了一个通知,

当你有ArrayLists时,使用迭代器不是一个好主意.

你不需要深刻理解那个问题来回答这个问题.

在那里,我得到两条评论,我错了.

我的论点:

  1. 迭代器的代码可读性差得多.

  2. 有可能引发难以调试的ConcurrentModificationException.

你能解释一下吗?

问题:我们是否需要在ArrayList上使用迭代器?

UPD

这是关于显式使用Iterator.

java

12
推荐指数
2
解决办法
6806
查看次数

Arraylist无法删除重复的字符串

public static void main(String[] args) {
       List<String> list = new ArrayList();
       list.add("AA");list.add("Aw");list.add("Aw");list.add("AA");
       list.add("AA");list.add("A45");list.add("AA");
       list.add("Aal");list.add("Af");list.add("An");

       System.out.println(list);

       for(int i=0;i<list.size();i++){
          if(list.get(i).equals("AA")){
             list.remove(i);
          }
       }

       System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试删除ArrayList中具有值的所有元素"AA",但是,它只删除其中的一些而不是全部.任何人都可以向我解释我做错了什么?

arraylist中的元素:

[AA, Aw, Aw, AA, AA, A45, AA, Aal, Af, An]
Run Code Online (Sandbox Code Playgroud)

我试图删除所有具有值的字符串后输出"AA".

[Aw, Aw, AA, A45, Aal, Af, An]
Run Code Online (Sandbox Code Playgroud)

为什么还在AA输出列表中?

java collections arraylist

2
推荐指数
1
解决办法
112
查看次数

在迭代时删除和添加对象列表

我试图从列表中删除对象,我得到以下异常:

failure:java.util.ConcurrentModificationException null
Run Code Online (Sandbox Code Playgroud)

这就是我尝试从列表中删除对象的方法:

private List<testVO> removeDuplicateEntries(List<testVO> sessionList,List<testVO> dbList){


        for (Iterator<testVO> dbIterator = dbList.listIterator(); dbIterator.hasNext(); ) {
            testVO voDB = dbIterator.next();

            for (Iterator<testVO> sessionIterator = sessionList.iterator(); sessionIterator.hasNext();) {
                testVO voSession = (testVO) sessionIterator.next();

                if(voDB.getQuestionID().intValue() == voSession.getQuestionID().intValue()){
                    //remove the object from sesion list
                    sessionIterator.remove();
                    //Add the object from DB to session list
                    sessionList.add(voDB);
                }

            }

        }

        return sessionList;
    }
Run Code Online (Sandbox Code Playgroud)

我想删除当前的副本sessionList并添加来自的重复项dbList.

java listiterator

1
推荐指数
1
解决办法
110
查看次数

Java Iterator进入无限while循环

我试图用iterator一会儿迭代列表,由于某种原因,它会无限循环。

这是代码

{
List<Person> Person1 = new ArrayList<Person>();

    Person p1 = new Person("Name1", "Virginia");

    Person1.add(new Person("Nae2", "Virginia"));

    printerlist(Person1);

    printerlist(p1);

}

private static void printerlist(List<Person> p) {

    /*
     * print the list
     */
    while (p.iterator().hasNext()) {
        System.out.println(p.iterator().next().getCity());
    }

}
Run Code Online (Sandbox Code Playgroud)

java arraylist

-1
推荐指数
1
解决办法
1106
查看次数

标签 统计

java ×4

arraylist ×2

collections ×1

listiterator ×1