在JAVA中从MAP打印

时间:2013-09-04 08:32:13

标签: java mapping

我想打印一些我从文本文件传递到地图的数据。但是,当我打印数据时,程序会打印两次行。有什么办法可以解决吗?我只想以精确的方式打印数据,没有重复。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

public class ReadToHashmap {
    public static void main(String[] args) throws Exception 
    {

        Map<String, String> map = new HashMap<>();
        final BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Documents and Settings\\stajn\\Desktop\\Cache_Son\\Cache\\Testing.txt"));




         if (bufferedReader != null) {
            String line;


         while ((line = bufferedReader.readLine()) != null) {
             String parts[] = line.split("\n");
             map.put(parts[0],parts[0]); 


            }

            bufferedReader.close();


            Iterator iterator = map.keySet().iterator();  

        while (iterator.hasNext()) 
    {  
        String key = iterator.next().toString();  
        String value = map.get(key).toString();  

        System.out.println(key + " " + value);  
    }  
        }


    }
}

3 个答案:

答案 0 :(得分:0)

你正在放置像

这样的地图
 map.put(parts[0],parts[0]); 

所以这里键和值是相同的。当你打印

 System.out.println(key + " " + value);  

两者都会打印相同的。

你需要吗?

 System.out.println("value=" + value);  

答案 1 :(得分:0)

您将该行放在KEY中,就像在MAP的值中一样。

在您的代码中,您正在打印KEY和VALUE,因此您正在复制该行

您只能在地图上打印值内容:

Iterator iterator = map.values().iterator();

while (iterator.hasNext()) {   

    System.out.println(iterator.next());  
} 

答案 2 :(得分:0)

您的代码还有其他一些严重问题:

使用bufferedReader.readLine()时,您的String永远不会包含换行符,因此您的split()将不执行任何操作,而部分[]将始终为长度为1的数组。

至于打印相同的值两次,请参阅其他答案......