2013-12-08 3 views
2

Итак, у меня есть эта Карта двоичного дерева (называемая «mainMap»), которая содержит строки как свои ключи, и каждый ключ имеет внутреннюю карту как свою пару значений. Эта карта внутри карты содержит строковые ключи и целочисленные значения.Прохождение/печать карты двоичного дерева в Java

Цель этой основной карты - указать, какое слово соответствует файлу и его частоте. например: Если «кошка» в «Arnold.txt» 14 раз, и это в «Jake.txt» 6 раз, карта проведет

ключ .... кошка
значение ... Карта [ ключ ... Arnold.txt, значение ... 14], [ключ .... Jake.txt, значение ... 6]

Это не проблема. Моя проблема состоит в том, чтобы прокладывать и печатать на карте. Я хочу

--Для каждый ключ в карте
1) Посещение текущего ключа в карте
2) Распечатайте этот ключ
3) Получить значение (карта)
.... ..... Для каждой клавиши в карте значений
............. a) Распечатайте ключ
............. b) Распечатайте значение
4) Пропустите строку, перейдите к следующей клавише, повторите шаги 1-4

Я думал, что могу использовать итера тор. Однако, к моему смущению, я не знаю, как использовать синтаксис с моим кодом. (Я не использую Java встроенный в TreeMap утилит. Я использую программист построил структуру данных.

У меня есть следующий метод в коде двоичного дерева Карта

public Iterator< KeyValuePair<K, E> > iterator() 
{ 
    Iterator< KeyValuePair<K, E> > itr = new MyTreeItr(); 
    return itr; 
} 

public Iterator< KeyValuePair<K, E> > breadthFirstIterator() 
{ 
    Iterator< KeyValuePair<K, E> > itr = new MyBreadthFirstItr(); 
    return itr; 
} 

Я надеюсь, что это достаточно информации. Это распечатка в целях тестирования, чтобы убедиться, что моя карта правильно собирает данные.

+0

Можете ли вы дать нам код для вашего дерева? Нам нужно знать, как это реализовано, чтобы ответить на это. – bcorso

+0

Конечно! Вы имеете в виду код, в котором я создал дерево mainMap или код с помощью методов класса BinaryTreeMap (или обоих?) – user2803214

+0

Обычно бинарные деревья имеют ссылки на корневой узел, и каждый узел имеет ссылки на левый и правый узлы. Однако вы описываете свою структуру как карту (где left/right не имеют смысла), поэтому я запутался в том, как вы используете карту для реализации двоичного дерева. – bcorso

ответ

0

Я не уверен, как структурировано ваше дерево, но основываясь на том, как вы описали свою структуру данных (Map<String, Map<String, Integer>>), вы можете попробовать это:

public void printAll(Map<String, Map<String, Integer>> map){ 
    for(Map.Entry<String, Map<String,Integer>> entry : map.entrySet()){ 
     System.out.println(entry.getKey()); 
     for(Map.Entry<String, Integer> innerEntry : entry.getValue().entrySet()){ 
      System.out.println(innerEntry.getKey()); 
      System.out.println(innerEntry.getValue()); 
     } 
     System.out.println(""); 
    } 
} 
Смежные вопросы