如何迭代LinkedHashMap并分别在键和值之间进行选择?

时间:2012-02-17 16:46:56

标签: java iterator hashmap key

目前我有这个:

try{
            // Create file 
            FileWriter fstream = new FileWriter("output");
            BufferedWriter out = new BufferedWriter(fstream);
            Iterator mapIt = assignments.entrySet().iterator();
            while (mapIt.hasNext()){
                out.write(mapIt.next().toString()+";\n");
            }
            //Close the output stream
            out.close();
        }

问题是,我不能只使用迭代器的toString(),我需要分别取出键和值,这样我就可以在输出文件中放一些东西。有谁知道我是怎么做到的?

3 个答案:

答案 0 :(得分:3)

您会注意到迭代器返回Map.Entry,其中包含getKeygetValue方法。

使用它们来获取相应的项目....类似

while (mapIt.hasNext()){
   Map.Entry entry = mapIt.next();
   Object key = entry.getKey();
   Object value = entry.getValue();
   // format away..
}

注意我将Object作为键和val的类型,但是您应该根据您定义的Map来指定类型。

答案 1 :(得分:1)

由于迭代器返回一组Map.Entry,你可以单独获取键和值:

http://docs.oracle.com/javase/6/docs/api/java/util/Map.Entry.html

答案 2 :(得分:1)

来自How to efficiently iterate over each Entry in a Map?

for (Map.Entry<String, String> entry : map.entrySet())
{
    System.out.println(entry.getKey() + "/" + entry.getValue());
}