从树映射中删除条目,获取java.util.NoSuchElementException
我试图使用一些逻辑从树映射中删除一些条目。这是我的密码从树映射中删除条目,获取java.util.NoSuchElementException,java,iterator,treemap,Java,Iterator,Treemap,我试图使用一些逻辑从树映射中删除一些条目。这是我的密码 TreeMap<String, Object> treeMap = someEntries(); Iterator<Entry<String, Object> iter = treeMap.entrySet().iterator(); Map.Entry<String, Object> entry = null; while ((entry = iter.next()) != null) {
TreeMap<String, Object> treeMap = someEntries();
Iterator<Entry<String, Object> iter = treeMap.entrySet().iterator();
Map.Entry<String, Object> entry = null;
while ((entry = iter.next()) != null) {
if (!entry.getKey().contains(search)) {
iter.remove();
}
}
什么是例外?这是迭代过程中的错误。还请给我建议一个正确的方法。您应该使用IteratorhasNext进行检查,而不是像这样使用Iteratornext:
您应该检查下一个元素,如下所示:
TreeMap<String, Object> treeMap = someEntries();
Iterator<Entry<String, Object>> iter = treeMap.entrySet().iterator();
Entry<String, Object> entry;
while (iter.hasNext()) {
entry = iter.next();
if (!entry.getKey().contains(search)) {
iter.remove();
}
}
如果在没有下一个元素时调用iter.next,则会抛出NoSuchElementException。当遍历到最后一个元素时,“next”点为NULL,因此在结束时将获得NoSuchElementException。 请使用以下代码进行尝试:
TreeMap<String, Object> treeMap = new TreeMap<String, Object>();
treeMap.put("a", 1);
treeMap.put("b", 2);
treeMap.put("c", 3);
treeMap.put("d", 4);
Iterator<Entry<String, Object>> iter = treeMap.entrySet().iterator();
Map.Entry<String, Object> entry = null;
while (iter.hasNext()) {
entry = iter.next();
System.out.println(entry.getKey());
if (!entry.getKey().contains("a")) {
iter.remove();
}
}
System.out.println("-----");
iter = treeMap.entrySet().iterator();
while (iter.hasNext()) {
entry = iter.next();
System.out.println(entry.getKey());
}
条目=iter.next!=无效的当迭代器没有更多元素时,iter.next将不会为null,而是抛出异常。
TreeMap<String, Object> treeMap = someEntries();
Iterator<Entry<String, Object>> iter = treeMap.entrySet().iterator();
Entry<String, Object> entry;
while (iter.hasNext()) {
entry = iter.next();
if (!entry.getKey().contains(search)) {
iter.remove();
}
}
TreeMap<String, Object> treeMap = new TreeMap<String, Object>();
treeMap.put("a", 1);
treeMap.put("b", 2);
treeMap.put("c", 3);
treeMap.put("d", 4);
Iterator<Entry<String, Object>> iter = treeMap.entrySet().iterator();
Map.Entry<String, Object> entry = null;
while (iter.hasNext()) {
entry = iter.next();
System.out.println(entry.getKey());
if (!entry.getKey().contains("a")) {
iter.remove();
}
}
System.out.println("-----");
iter = treeMap.entrySet().iterator();
while (iter.hasNext()) {
entry = iter.next();
System.out.println(entry.getKey());
}