Halloechen,
ich brauche in meinem Programm folgendes Konstrukt: Gegeben ist eine Anzahl von Strings, Ziel soll es sein in der Ausgabe die Strings alphabetisch zu sortieren, allerdings mit der entsprechenden Zuordnung zur Position in der Stringliste.
Abstrakt sieht das wie folgt aus:
String[] strings={"ABBA","VOLVO","BITTE","ANTWORT"};
das Ergebniss soll sein:
0: ABBA
3: ANTWORT
2: BITTE
1: VOLVO
Ich habe dazu in etwa folgendes gebastelt:
Da ich das "im wirklichen Leben" mit vielen hunderttausend Strings machen muss, suche ich nun nach einer kostenguenstigeren Alternative.
Hat jemand eine Idee, wie ich das Problem schneller loesen kann?
Danke!
Gruss, FFNB.
ich brauche in meinem Programm folgendes Konstrukt: Gegeben ist eine Anzahl von Strings, Ziel soll es sein in der Ausgabe die Strings alphabetisch zu sortieren, allerdings mit der entsprechenden Zuordnung zur Position in der Stringliste.
Abstrakt sieht das wie folgt aus:
String[] strings={"ABBA","VOLVO","BITTE","ANTWORT"};
das Ergebniss soll sein:
0: ABBA
3: ANTWORT
2: BITTE
1: VOLVO
Ich habe dazu in etwa folgendes gebastelt:
Java:
import java.text.CollationKey;
import java.text.Collator;
import java.util.ArrayList;
import java.util.TreeMap;
public class Main
{
public static void main(String[] args)
{
String[] strings={"ABBA","VOLVO","BITTE","ANTWORT","ZETTEL","ABWASCH","KLEIN","HUT","FENSTER"};
TreeMap<CollationKey, Integer> treeMap = new TreeMap<CollationKey, Integer>();
Collator collator = Collator.getInstance();
collator.setStrength(Collator.PRIMARY);
for(int position=0; position<strings.length; position++)
{
treeMap.put(collator.getCollationKey(strings[position]), position);
}
int[] sortiert = getIntArrayFromTreeMap(treeMap);
for(int i=0; i<sortiert.length; i++)
{
System.out.println(sortiert[i]+": "+strings[sortiert[i]]);
}
}
static int[] getIntArrayFromTreeMap(TreeMap<? extends Object,Integer> treeMap)
{
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.addAll(treeMap.values());
int[] indexEntries = new int[arrayList.size()];
for(int i=0; i<arrayList.size(); i++)
{
indexEntries[i] = arrayList.get(i).intValue();
}
return indexEntries;
}
}
Da ich das "im wirklichen Leben" mit vielen hunderttausend Strings machen muss, suche ich nun nach einer kostenguenstigeren Alternative.
Hat jemand eine Idee, wie ich das Problem schneller loesen kann?
Danke!
Gruss, FFNB.