search - 遍历 HashMap

标签 search iterator hashmap loops

好的,所以我目前正在研究一种搜索方法,搜索的术语遍历数据库,并将匹配的产品添加到具有 2 个整数字段的 hashMap。

然后在制作 hashmap 之后,将显示项目,但是我无法让 hashmap 打印出详细信息

这是我的代码

public HashMap<Integer, Integer> bankSearch = new HashMap<Integer, Integer>();

和使用

    Iterator it = bankSearch.entrySet().iterator();
    while (it.hasNext()) {
        HashMap.Entry pairs = (HashMap.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
        if (bankItemsN[i] > 254) {
            outStream.writeByte(255);
            outStream.writeDWord_v2(pairs.getValue());
        } else {
            outStream.writeByte(pairs.getValue()); // amount
        }
        if (bankItemsN[i] < 1) {
            bankItems[i] = 0;
        }
        outStream.writeWordBigEndianA(pairs.getKey()); // itemID
    }

当前错误

.\src\client.java:75: cannot find symbol
symbol  : class Iterator
location: class client
                Iterator it = bankSearch.entrySet().iterator();
                ^
.\src\client.java:77: java.util.HashMap.Entry is not public in java.util.HashMap
; cannot be accessed from outside package
                        HashMap.Entry pairs = (HashMap.Entry)it.next();
                               ^
.\src\client.java:77: java.util.HashMap.Entry is not public in java.util.HashMap
; cannot be accessed from outside package
                        HashMap.Entry pairs = (HashMap.Entry)it.next();
                                                      ^
3 errors
Press any key to continue . . .

最佳答案

您收到的错误是由于:

  • 您没有导入 java.util.Iterator

  • HashMap.Entry 是私有(private)内部类。你应该使用 Map.Entry

此外,正如 templatetypedef 所说,您应该使用 Iterator 的通用版本,或使用 for-each 结构。

附录

下面是一些实际代码,演示了这两种方法:

import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> m = new HashMap<String, Integer>();
        m.put("One", 1);
        m.put("Two", 2);
        m.put("Three", 3);

        // Using a for-each
        for (Map.Entry<String, Integer> e: m.entrySet()) {
            System.out.println(e.getKey() + " => " + e.getValue());
        }

        // Using an iterator
        Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry e = (Map.Entry<String, Integer>)it.next();
            System.out.println(e.getKey() + " => " + e.getValue());
        }
    }
}

关于search - 遍历 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007513/

相关文章:

search - 如何检查Elasticsearch搜索响应是给定搜索成功还是失败

java - 如何使用迭代器从 1 个 ArrayList 对象创建 4 个 ArrayList 对象(对于每个对象)

jsp - 如何使用strut标签在JSP中迭代hashmap

java - 比较器和优先级队列

javascript - JavaScript 队列的 O(1) 删除

arrays - Ruby 数组搜索方法未按预期工作

c++ - 在数组中搜索时间

c# - ASP :NET MVC multiple words in search

python - 生成元组以在一个 for 循环中迭代

python - 带有数组的函数的 PyCharm getitem 警告