2015-03-18 1 views
1

У меня есть фрагмент кода, который не сортируется правильно. Мне нужно отсортировать HashMap с помощью ключей с помощью TreeMap, а затем записать в текстовый файл. Я посмотрел онлайн по сортировке и обнаружил, что TreeMap может сортировать HashMap по ключам, но я не уверен, использую ли я его неправильно. Может кто-нибудь, пожалуйста, взгляните на фрагмент кода и сообщите, если это неверно?Сортировка HashMap с помощью ключей с помощью TreeMap

public void compareDICOMSets() throws IOException 
    { 
     FileWriter fs; 
     BufferedWriter bw; 
     fs = new FileWriter("dicomTagResults.txt"); 
     bw = new BufferedWriter(fs); 
     Map<String, String> sortedMap = new TreeMap<String, String>(); 
     for (Entry<String, String> entry : dicomFile.entrySet()) 
     {  
      String s = entry.toString().substring(0, Math.min(entry.toString().length(), 11)); 
      if(dicomTagList.containsKey(entry.getKey())) 
      { 
       sortedMap.put(s, entry.getValue()); 
       Result.put(s, entry.getValue()); 
       bw.write(s + entry.getValue() + "\r\n");     
      } 
     } 
     bw.close(); 
     menu.showMenu(); 
    } 
} 

UPDATE:

Это то, что я получаю за результат, когда я делаю Println:

(0008,0080) 
(0008,0092) 
(0008,1010) 
(0010,4000) 
(0010,0010) 
(0010,1030) 
(0008,103E) 
(0008,2111) 
(0008,1050) 
(0012,0040) 
(0008,0094) 
(0010,1001) 

Я ищу, чтобы разобраться в этом численно. Я добавил String s, чтобы обрезать Key down только теги, поскольку он отображал целую цепочку вещей, которая была ненужной.

+1

здесь уже ответил http://stackoverflow.com/questions/922528/how-to-sort-map-values -by-key-in-java – abarisone

+0

Спасибо, плохо посмотри – ryekayo

+0

@abarisone, я взглянул на это, и я действительно обратился к этому, прежде чем задал вопрос. Но я почти уверен, что делаю что-то не так с моим кодом. Позаботьтесь, чтобы взглянуть на него? – ryekayo

ответ

2

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

Для Java 8:

Map<String, String> Result = ...; 

// This orders your Result map by key, using String natural order 
Map<String, String> ordered = new TreeMap<>(Result); 

// Now write the results 
BufferedWriter bw = new BufferedWriter(new FileWriter("dicomTagResults.txt")); 
ordered.forEach((k, v) -> bw.write(k + v + "\r\n"); 

bw.close(); 

Для предварительного Java 8:

Map<String, String> Result = ...; 

// This orders your Result map by key, using String natural order 
Map<String, String> ordered = new TreeMap<>(Result); 

// Now write the results 
BufferedWriter bw = new BufferedWriter(new FileWriter("dicomTagResults.txt")); 
for (Map.Entry<String, String> entry : ordered.entrySet()) { 
    String k = entry.getKey(); 
    String v = entry.getValue(); 
    bw.write(k + v + "\r\n"); 
} 

bw.close(); 
+1

'->' wont work, я пишу это в несколько более старой версии Java (Java 6) – ryekayo

+0

@ryekayo OK, я добавлю пример java8. –

+1

Спасибо большое :). – ryekayo

Смежные вопросы