2015-06-26 2 views
-1

У меня есть TreeMap, который выглядит следующим образом при печатиФорматирование вывода дерева Карта

private Map<Double, Double> map = new TreeMap<Double, Double>(); 
System.out.println(map); 
output: 
{1=2.9, 3=5.4, 5=98.4, 4=90.1, 2=87.7} 

мне интересно, как я могу напечатать карту, чтобы посмотреть что-то больше похоже на

1 = 2.9 
2 = 87.7 
3 = 5.4 
4 = 90.1 
5 = 98.4 

Прямо сейчас все, что я могу сделать, это сделать System.out.println(map); и получить вывод, который показан выше.

+2

Если вы @Override метод 'toString()', вы можете сделать его печатным как угодно. Просто создайте свой собственный «PrettyTreeMap» или что-то с выходом, который хотите увидеть. – azurefrog

+0

Подсказка: 'map.keySet()' возвращает ключи, и набор может быть итерирован по порядку. Все, что вам нужно сделать, это написать цикл для печати. – laune

+1

@laune Лучшая подсказка, map.entrySet() возвращает ключи и значения, поэтому вам не нужно использовать for (key: map) {map.get (key); } anti-pattern :-). –

ответ

1

Вы можете перебирать Записи себя:

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

Или вы можете использовать лямбда, если вы используете Java 8:

map.entrySet().forEach(e -> System.out.println(e.getKey() + " = " + e.getValue())); 
map.forEach((k, v) -> System.out.println(k + " = " + v)); 
+1

Я думаю, что вы можете опустить поток(). – laune

+0

@laune Действительно, спасибо! –

+0

На самом деле, я могу просто использовать Map.forEach напрямую. У меня явно были потоки в голове, когда я написал ответ :-). –

1
Set treeSet = tmap.entrySet(); 
Iterator iterator = treeSet.iterator(); 

while(iterator.hasNext()) { 
    Map.Entry integer = (Map.Entry)iterator.next(); 
    System.out.print(integer.getKey() + ": "); 
    System.out.println(integer.getValue()); 
} 

Использование в Java Set и Iterator. Убедитесь, что вы включили в себя следующие импортные товары:

import java.util.Iterator; 
import java.util.Map; 
import java.util.Set;