Java 从集合中删除会导致 IllegalStateException

标签 java set illegalstateexception

例如,我正在尝试删除程序提供给我的第二个元素。

但它会导致 IllegalStateException。

我做错了什么?

HashSet<String> list = new HashSet<>();
list.add("123");
list.add("qwe");
list.add("asd");
int count = 0;
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
  if (count == 1) {
    iterator.remove();
  }
  count++;
}

最佳答案

如果不先调用 iterator.next(),则无法调用 iterator.remove()。除此之外,如果不使用 iterator.next() 推进迭代器,您的循环将是一个无限循环。

for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
  String str = iterator.next();
  if (count == 1) {
    iterator.remove();
  }
  count++;
}

关于Java 从集合中删除会导致 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087089/

相关文章:

java - 从 Java 中的 FileReader 中搜索数据

java - 什么是 Spring 的元数据编程?

c++ - 如何在实现文件中初始化一个 static const set<string>?

c++ - 用于访问集合的已排序子集的数据结构 C++

导致 : IllegalStateException: Can not perform this action after onSaveInstanceState 的 Android fragment 和方向更改

Android: java.lang.IllegalStateException: 数据库 xxx.db (conn# 0) 已经关闭

java - 获取本质上是原型(prototype)的自动连线字段的新实例的更干净的方法

java - 从文件中读取前 5 行,然后读取其余行

java - 如何将数据添加到 CSV 文件而不是删除以前的数据

objective-c - 如何处理存储属性的集合并快速获取