Java ArrayList在foreach中remove的

àì夳堔傛蜴生んèń 2022-05-14 13:39 273阅读 0赞

我告诉你,这种方式会报错

  1. @Test(expected = ConcurrentModificationException.class)
  2. public void testListForeachRemoveThrow() {
  3. List<String> list = new ArrayList<>();
  4. list.add("1");
  5. list.add("2");
  6. list.add("3");
  7. for (String s : list) {
  8. list.remove(s);
  9. }
  10. }
  11. @Test(expected = ConcurrentModificationException.class)
  12. public void testListForeachAddThrow() {
  13. List<String> list = new ArrayList<>();
  14. list.add("1");
  15. list.add("2");
  16. list.add("3");
  17. for (String s : list) {
  18. list.add(s);
  19. }
  20. }

不能在foreach的时候添加元素和删除元素否则会报错
你可以优雅的这样

  1. @Test
  2. public void testListForiRight() {
  3. List<String> list = new ArrayList<>();
  4. list.add("1");
  5. list.add("2");
  6. list.add("3");
  7. for (int i = 0; i < list.size(); i++) {
  8. System.out.println(list.get(i));
  9. list.remove(i);
  10. i--; //位置前挪了减回去就行了
  11. }
  12. }
  13. @Test
  14. public void testIteratorRemove() {
  15. List<String> list = new ArrayList<>();
  16. list.add("1");
  17. list.add("2");
  18. list.add("3");
  19. Iterator<String> itr = list.iterator();
  20. while (itr.hasNext()) {
  21. String s = itr.next();
  22. System.out.println(s);
  23. itr.remove();
  24. }
  25. }

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 容易忽略ArrayList.remove

    ArrayList.remove 方法是常用的一个移除集合里某个对象的方法。此方法使用起来非常方便。但是在使用的时候一定要注意当被移除的对象是int 类型的时候。确保正确使用这