Hallo,
ich habe ein Problem mit einer Klasse - sie ist zu langsam. Mir fällt momentan nicht ein, wie ich sie schneller machen könnte. Es geht um folgendes: Ich will ein Wort in seine Teilworte zerlegen - also "Prüfungszeitstressfaktor" in Prüfung zeit stress faktor.
Dazu habe ich die Klasse CompoundSplitter, die eine Methode "splitOnce" besitzt, die an der wahrscheinlichsten Stelle trennt, im Obigen Fall ist vor "faktor". Danach wird erneut versucht zu trennen, und zwar "Prüfungszeitstress" und "faktor". "faktor" kann nicht weiter getrennt werden, aber prüfungszeitstress in prüfungszeit und stress usw usf.
das ganze sieht dann so aus:
erst wenn in einem schleifendurchlauf nichts mehr getrennt wurde, wird die liste zurückgegeben.
das ganze dauert mir zu lange - wie kann ich da noch ein paar iterationen rausnehmen?
ich habe ein Problem mit einer Klasse - sie ist zu langsam. Mir fällt momentan nicht ein, wie ich sie schneller machen könnte. Es geht um folgendes: Ich will ein Wort in seine Teilworte zerlegen - also "Prüfungszeitstressfaktor" in Prüfung zeit stress faktor.
Dazu habe ich die Klasse CompoundSplitter, die eine Methode "splitOnce" besitzt, die an der wahrscheinlichsten Stelle trennt, im Obigen Fall ist vor "faktor". Danach wird erneut versucht zu trennen, und zwar "Prüfungszeitstress" und "faktor". "faktor" kann nicht weiter getrennt werden, aber prüfungszeitstress in prüfungszeit und stress usw usf.
das ganze sieht dann so aus:
Java:
protected List<String> iterativeSplit(String word){
List<String> tlist1 = new LinkedList<String>();
List<String> tlist2 = new LinkedList<String>();
List<String> tlist3 = new LinkedList<String>();
tlist1.add(word);
boolean splitted;
while(true){
splitted = false;
for(String tempword : tlist1){
tlist3 = this.splitOnce(tempword);
if(tlist3.size() > 1){
splitted = true;
}
tlist2.addAll(tlist3);
}
if(splitted == false){
return tlist1;
}else{
tlist1.clear();
tlist1.addAll(tlist2);
tlist2.clear();
}
}
}
erst wenn in einem schleifendurchlauf nichts mehr getrennt wurde, wird die liste zurückgegeben.
das ganze dauert mir zu lange - wie kann ich da noch ein paar iterationen rausnehmen?