个人网站怎样申请,装饰设计培训,网站空间流量查询,深圳网站建设公司pestl分析List接口做为Java集合框架中的一员#xff0c;对数据的操作和处理比数组方便许多。在数组中插入一个元素要从数组的最后一个元素到当前插入的位置依次向后移动一位#xff0c;然后为插入的位置进行赋值。在数组删除一个元素要从删除元素的下一个元素位置到数组最后一个元素依…List接口做为Java集合框架中的一员对数据的操作和处理比数组方便许多。在数组中插入一个元素要从数组的最后一个元素到当前插入的位置依次向后移动一位然后为插入的位置进行赋值。在数组删除一个元素要从删除元素的下一个元素位置到数组最后一个元素依次向前移动一位。今天学习python的时候看到list [1,1,1,2,3,4]for i in range(len(list)):if list[i] 1:del list[i]这样是会报错的然后我就想Java中的List如何删除重复的元素呢于是做了一下尝试List list new ArrayList();list.add(a);list.add(a);list.add(a);list.add(c);//wrong way每次删除index位置的元素后边的index1元素会向前移动到index的位置。下次遍历到Index1实际上是index2位置的元素这样总会有一些元素没有办法遍历到。有一种解决方法是每删除一个元素index--for(int i0;iif(list.get(i).equals(a))list.remove(i);}//wrong way这样操作会报错ConcurrentModificationException。此类的iterator和listIterator方法返回的迭代器是快速失败的在创建迭代器之后除非通过迭代器自身的remove或add方法从结构上对列表进行修改否则在任何时间以任何方式对列表进行修改迭代器都会抛出 ConcurrentModificationException。因此面对并发的修改迭代器很快就会完全失败而不是冒着在将来某个不确定时间发生任意不确定行为的风险。for(String li:list){if(li.equals(a))list.remove(li);}//wrong way创建迭代器之后只能通过迭代器自身的remove或add方法从结构上对列表进行修改Iterator it list.iterator();while(it.hasNext()){String element (String) it.next();if(element.equals(a))list.remove(element);}//right删除元素后下标会向前移动一个位置所以由后向前删除就没有问题了。for(int ilist.size()-1;i-1;i--){if(list.get(i).equals(a))list.remove(i);}//right针对迭代器进行remove()也没有问题Iterator iterator list.iterator();while(iterator.hasNext()){if(iterator.next().equals(a))iterator.remove();}//right use set一种最简单的方法是用set去除重复的元素。Set sets new HashSet();sets.addAll(list);System.err.println(sets);