Sortering af treemap samt søgning
2. spørgsmål.Jeg har et treemap der består af
String = Key
Integer = Values
Jeg skal lave en søgning i treemap der returnerer alle ord med en bestemt begyndelses string, dette output skal der derefter sorteres efter deres values, og flyttes over i et String array.
Så hvis følgende keys står i treemap:
Key Value
Abe 1
And 2
Henrik 10
Anders 1
Der søges nu på String "a" så bliver der i første omgang returneret:
Key Value
Abe 1
And 2
Anders 1
De skal nu sorteres til:
Key Value
Abe 1
Anders 1
And 2
Disse keys flyttes så over i et Array hvor Abe ligger først, Anders nr 2, og And nr 3.
Her er min kode så langt. (Jeg beklager længden af spørgsmålet men håber der er en venlig sjæl der kan hjælpe)
import java.util.*;
import java.text.*;
public class Ordbog
{
private SortedMap ordbog;
private String[] DKOrdbog ={"Tegning","Vandfald","Træsko","Kartoffel",
"Cirkus","åkande","æble","Abe", "Hav","Trumpet"};
public Ordbog()
{
Collator coll = Collator.getInstance(new Locale ("da", "DK"));
ordbog = new TreeMap<String,Integer>(coll);
loadOrdbog(DKOrdbog);
}
public String[] søg(String ord)
{
String s = "";
TreeSet ts = new TreeSet(new ValSorter());
ts.addAll(ordbog.values());
System.out.println(ts);
// Set<Map.Entry<String,Integer>> navneSet = ts.entrySet(); //Collection view af set.
// Iterator<Map.Entry<String,Integer>> ite = navneSet.iterator();
//while (ite.hasNext())
//s += ite.next().toString() + "\n";
return null;
}
public String toString()
{
String s = "";
Set<Map.Entry<String,Integer>> navneSet = ordbog.entrySet(); //Collection view af set.
Iterator<Map.Entry<String,Integer>> ite = navneSet.iterator();
while (ite.hasNext())
s += ite.next().toString() + "\n";
return s;
}
private void loadOrdbog(String[] ordbog)
{
for (int i=0; i < ordbog.length; i++)
{
putOrd(ordbog[i]);
}
}
public void putOrd(String ord)
{
ord = ord.toUpperCase();
int i = 1;
if (findes(ord))
{
i = ((Integer) ordbog.get(ord));
i++;
}
ordbog.put(ord,i);
}
private boolean findes(String ord)
{
ord = ord.toUpperCase();
return (ordbog.containsKey(ord));
}
}
