用JAVA从地图打印



我想打印一些从文本文件传递到映射的数据。然而,当我打印数据时,程序会打印两次行。有什么办法解决它吗?我只想以精确的方式打印数据,不要重复。

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);  
    }  
        }

    }
}

您正在放入类似的地图

 map.put(parts[0],parts[0]); 

所以这里Key和value是相同的。打印时

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

两者打印的内容相同。

你需要吗?

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

您将这两行都放在KEY中,就像放在MAP的VALUE中一样。

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

您可以使用仅打印地图上的值内容

Iterator iterator = map.values().iterator();
while (iterator.hasNext()) {   
    System.out.println(iterator.next());  
} 

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

当使用bufferedReader.readLine()时,您的String永远不会包含换行符,因此您的split()将不起任何作用,parts[]将始终是一个长度为1的数组。

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

最新更新