2013-09-04 2 views
2

Я хочу напечатать некоторые данные, которые я передал для отображения из текстового файла. Однако, когда я печатаю данные, программа печатает строки дважды. Есть ли способ исправить это? Я просто хочу напечатать данные точным образом, без дубликатов.Печать с MAP в 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); 
    } 
     } 


    } 
} 

ответ

0

Вы ставите на карте, как

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

Так вот ключ и значение same.When печати

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

И будет печатать то же самое.

Вам нужно?

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

Большое спасибо. –

+0

@ user2703902 Рад, что это помогло :) –

0

Вы помещаете линию как в КЛЮЧЕ, так и в ЗНАЧЕНИЕ КАРТЫ.

В своем коде вы печатаете ключ и значение, так что вы копируете строку

Вы можете печатать только содержание значений на карте с:

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

while (iterator.hasNext()) { 

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

Ваш код имеет некоторые другие серьезные проблемы:

При использовании bufferedReader.readLine() ваша строка никогда не будет содержать символ новой строки, поэтому ваш split() ничего не сделает, а части [] всегда будут длиной-1-массивом.

Что касается печати того же значения, то дважды см. Другие ответы ...