Hallo alle zusammen!
Der Titel ist vielleicht etwas unglücklich gewählt, ich wusste aber nicht wie ich das sonst in Kurzform ausdrücken sollte.
Zu meinem Problem.
Ich habe eine Liste von Elementen. Einige dieser Elemente, habe ein "COMBINE"-Flag. welches aussagt, das es mit dem nächsten Element in der Liste kombiniert werden kann.
Ziel ist es nun die Liste durch zu gehen und kombinierbare Elemente miteinander zu kombinieren.
Beispiel:
Aus:
entsteht
Nun kommt ein erneuter Schwierigkeitsgrad hinzu, nämlich das die Einträge eine Priorität haben. D.h. Wenn im obigem Beispiel Eintrag 2 eine höhere Priorität hat als Eintrag 1, dann soll Eintrag 2 mit Eintrag 1 kombiniert werden und nicht umgekehrt.
(Die Prioritäten sind eigentlich keine Zahl. Die Elemente sind unterschiedlicher Klassentypen, wobei die einen höher priorisiert sein sollen als andere)
Beispiel:
Aus
ensteht
Ersteres halte ich für machbar, 2teres ist schon schwieriger und ich wüsste nicht wie ich da ran gehen sollte.
Hier der header der Methode
Könnt Ihr mir helfen einen Ansatz zu finden?
Mein Basisversuch:
Der Titel ist vielleicht etwas unglücklich gewählt, ich wusste aber nicht wie ich das sonst in Kurzform ausdrücken sollte.
Zu meinem Problem.
Ich habe eine Liste von Elementen. Einige dieser Elemente, habe ein "COMBINE"-Flag. welches aussagt, das es mit dem nächsten Element in der Liste kombiniert werden kann.
Ziel ist es nun die Liste durch zu gehen und kombinierbare Elemente miteinander zu kombinieren.
Beispiel:
Aus:
Code:
Liste
Eintrag 1 (combine)
Eintrag 2
Eintrag 3 (combine)
Eintrag 4
entsteht
Code:
Liste
Eintrag 1 kombiniert mit 2
Eintrag 3 kombiniert mit 4
Nun kommt ein erneuter Schwierigkeitsgrad hinzu, nämlich das die Einträge eine Priorität haben. D.h. Wenn im obigem Beispiel Eintrag 2 eine höhere Priorität hat als Eintrag 1, dann soll Eintrag 2 mit Eintrag 1 kombiniert werden und nicht umgekehrt.
(Die Prioritäten sind eigentlich keine Zahl. Die Elemente sind unterschiedlicher Klassentypen, wobei die einen höher priorisiert sein sollen als andere)
Beispiel:
Aus
Code:
Liste
Eintrag(prio 1) 1 (combine)
Eintrag(prio 3) 2
Eintrag(prio 4) 3 (combine)
Eintrag(prio 2) 4
ensteht
Code:
Liste
Eintrag 2 kombiniert mit 1
Eintrag 3 kombiniert mit 4
Ersteres halte ich für machbar, 2teres ist schon schwieriger und ich wüsste nicht wie ich da ran gehen sollte.
Hier der header der Methode
Java:
public List<Element> combineElements(LinkedList<Element> uncombinedList)
Könnt Ihr mir helfen einen Ansatz zu finden?
Mein Basisversuch:
Java:
public List<Element> combineElements(LinkedList<Element> uncombinedList) {
Element lastElement = null;
Iterator<Element> it = uncombinedList.iterator();
while (it.hasNext()) {
Element currentElement = it.next();
if (null != lastElement && lastElement.hasCombineflag()) {
if(lastElement.getPrio() > currentElement.getPrio()) {
// combine last with current
// and delete current (not used anymore)
} else {
// combine current with last
// and delete last (not used anymore)
}
}
lastElement = currentElement;
}
return uncombinedList;
}
Zuletzt bearbeitet: