Kolekcje obiektów

0

Cwiczenie z "Thinking in Java": Wypelnij kontener LinkedHashMap kluczami String i wartosciami wybranego typu. Wylusjkaj z kontenera poszczegolne pary, uporzadkuj je wedlug wartosci kluczy i ponownie wstaw do kontenera Map.

Pierwsze rozwiazanie proponowane przez autora, drugie przeze mnie.

import java.util.*;

public class Ex24 {
public static void main(String[] args) {
Map<String,Integer> m =
new LinkedHashMap<String,Integer>();
m.put("ten", 10);
m.put("nine", 9);
m.put("eight", 8);
m.put("seven", 7);
m.put("six", 6);
m.put("five", 5);
m.put("four", 4);
m.put("three", 3);
m.put("two", 2);
m.put("one", 1);
m.put("zero", 0);
System.out.println("Map to sort: " + m);
// temporary map to hold entrys:
Map<String,Integer> mTemp =
new LinkedHashMap<String,Integer>();
// use TreeSet to sort the keySet():
Set<String> ss = new TreeSet<String>(m.keySet());
// mover sorted keys to temp map:
Iterator<String> itss = ss.iterator();
while(itss.hasNext()) {
String s = (String)itss.next();
Integer i = m.get(s);
m.remove(s);
mTemp.put(s, i);
}
// get sorted list of temp keys:
Set<String> ssTemp =
new TreeSet<String>(mTemp.keySet());
// move sorted entrys back to map:
Iterator<String> itssTemp = ssTemp.iterator();
while(itssTemp.hasNext()) {
String s = (String)itssTemp.next();
Integer i = mTemp.get(s);
mTemp.remove(s);
m.put(s, i);
}
// done with temp:
mTemp.clear();
System.out.println("Sorted map: " + m);
}
}

import java.util.*;

public class Ex24 {
public static void main(String[] args) {
Map<String, Integer> m = new LinkedHashMap<String, Integer>();
m.put("ten", 10);
m.put("nine", 9);
m.put("eight", 8);
m.put("seven", 7);
m.put("six", 6);
m.put("five", 5);
m.put("four", 4);
m.put("three", 3);
m.put("two", 2);
m.put("one", 1);
m.put("zero", 0);
System.out.println("Map to sort: " + m);
Set<String> lista = new TreeSet<String>(m.keySet());
Map<String, Integer> mTemp = new LinkedHashMap<String, Integer>();
for (String s: lista)
if (mTemp.get(s) == null)
mTemp.put(s, m.get(s));
m.clear();
m.putAll(mTemp);
mTemp.clear();
System.out.println("Sorted map: " + m);
}
}

Dlaczego uzywany jest iterator? Czy moje rozwiazanie nie jest wydajnieszne ? No i jakich programow uzywacie do sprawdzenia wydajnosci ? Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1