Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从树映射中删除条目,获取java.util.NoSuchElementException_Java_Iterator_Treemap - Fatal编程技术网

从树映射中删除条目,获取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());
}