Permutation und Listen

S

Skara

Gast
Hallo,

Ich habe ein für mich als Java-Anfänger merkwürdiges Problem:

Meine Aufgabe ist es, eine Klasse
Code:
public static <T> List<LinkedList<T>> perm(List<T> values) {...
so zu schreiben, dass alle Permutationen als Liste in einer LinkedList ausgeben werden. Dabei werden die Elemente mit "values" übergeben.
Im Prinzip könnte das alles ganz gut funktioren, aber aus irgendeinem Grund werden nach Zeile 20, wo die Elemente getauscht werden, alle Listenelemente aus "result" zu dem aktuellen "values"-Element umgewandelt. Das soll heißen, dass wenn zum Beispiel als erstes [1,2,3] zu "result" hinzugefügt wurde und gerade "values" zu [2,1,3] vertauscht wurde, plötzlich auch alle Elemente aus "result" zu [2,1,3] werden. Das geht die ganze Zeit bis zum Ende der Funktion so weiter bis am Ende so etwas rauskommt wie
Code:
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
.
Gebe ich die Zwischenergebne allerdings direkt per print aus kann ich die richtigen Permutationen auslesen.

Warhscheinlich ist es recht schwer nachzuvollziehen, was mein Quelltext bedeuten soll und was ich überhaupt will, aber vielleicht hat jemand eine tolle Idee ;)


Java:
import java.util.*;
public class permutations {
	public static <T> List<LinkedList<T>> perm(List<T> values) {
	    int count;
		List<LinkedList<T>> result = new LinkedList<LinkedList<T>>();
		if (values.size()==0) return result;
		count = values.size()-1;
		return permhilf(values, count, result) ;
		
		
	}

	
	public static <T> List<LinkedList<T>> permhilf(List<T> values, int count, List<LinkedList<T>> result) {
		if (count==0){
			result.add(0, (LinkedList<T>) values);
		} else
			
			{
				permhilf(values, count-1, result);
				for (int i=0; i<=count-1; i++){
					swap(values, i, count);
					permhilf(values, count-1,result);
					swap(values, i, count);
				}
			}
		return result;
	}
	
	static <T> void swap(List<T> values, int i, int j) {
		T temp = values.get(i);
		values.set(i,(values.get(j)));
		values.set(j,temp);
	
	}
	
	
	public static void main (String [] args) {
		List<Integer> test = new LinkedList<Integer>();
		test.add(1);
		test.add(2);
		test.add(3);
		System.out.println(perm(test));
		
	}
}
 

Marco13

Top Contributor
Das "values", was da rumregeicht wird, ist eine Referenz. Diese Referenz zeigt immer auf EIN und dieSELBE Liste. Am Ende liegt in der Liste einfach x mal dieSELBE liste. Sowas wie
result.add(0, (LinkedList<T>) values);
ändern in
result.add(0, new LinkedList<T>(values));
sollte schon helfen: Da wird jedes mal eine neue LinkedList in die Liste gelegt (und diese LinkedList enthält die "values", wie sie zu diesem Zeitpunkt eben angeordnet sind)
 
S

Skara

Gast
Ja, natürlich! Ich glaube auf die Idee wäre ich morgen noch nicht gekommen =P
Ich danke dir vielmals für deine Hilfe.

Gruß,
Skara.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Permutation ohne Wiederholung mit rekursion Allgemeine Java-Themen 4
1 Permutation mit Wiederholung Allgemeine Java-Themen 7
A Permutation mit Wiederholungen Allgemeine Java-Themen 10
S Permutation / Kombination Allgemeine Java-Themen 3
N Permutation die zweite Allgemeine Java-Themen 3
P Permutation mit wiederholung Allgemeine Java-Themen 6
D Zwei Listen vergleichen Allgemeine Java-Themen 7
M doppelt verkettete Listen Allgemeine Java-Themen 2
L Listen Allgemeine Java-Themen 3
F Verständnisprobleme Aufgabenstellung Aktionsobjekte und generische Listen Allgemeine Java-Themen 1
E Listen in Java aneinanderfügen, subtrahieeren usw. Allgemeine Java-Themen 14
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
J Mit Referenzen verkettet Listen. Allgemeine Java-Themen 9
S Intressante Benchmark-Ergebnisse mit Listen. Weiss jemand wie man diese erklaeren kann? Allgemeine Java-Themen 15
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
P Listen sortieren Allgemeine Java-Themen 1
RalleYTN Collections Verständnisfrage zu Objektreferenzen in Listen Allgemeine Java-Themen 5
C Listen Allgemeine Java-Themen 1
M liste von listen anders ausgeben Allgemeine Java-Themen 1
W Sortierte Listen - Methode suchen Allgemeine Java-Themen 17
W Sortierte Listen mit Polymorphismus Allgemeine Java-Themen 6
J Rekursion oder Iteration - verkettete Listen Allgemeine Java-Themen 8
P Doppeltverkettete Listen + Text Allgemeine Java-Themen 5
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
F JAXB / Listen durchlaufen Allgemeine Java-Themen 17
T Drucken von variabel langen Listen (es kommen nur leere Seiten raus) Allgemeine Java-Themen 2
F Vergleich zweier Listen Allgemeine Java-Themen 4
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
D variabler Listen name Allgemeine Java-Themen 3
V Drucken von Listen Allgemeine Java-Themen 6
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
L verkettete Listen oder Arrays + Indexlisten effizienter? Allgemeine Java-Themen 3
M Addieren von Listen Allgemeine Java-Themen 2
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
S Mehrere Listen ineinander verschachteln Allgemeine Java-Themen 22
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
R Objektsynchronisierung zweier Listen?!?! Allgemeine Java-Themen 2
H Listen Allgemeine Java-Themen 5
G Datenstruktur: LISTEN Allgemeine Java-Themen 7
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
C Problem Methoden, Klassen, Listen Allgemeine Java-Themen 27
K Listen,Bäume,Mengen Allgemeine Java-Themen 3
S Hinzufügen von Elementen zu Listen Allgemeine Java-Themen 4
A zwei listen vergleichen und unterschiede anzeigen Allgemeine Java-Themen 3
D Listen / Datenstrukturen und ein blutiger Anfänger Allgemeine Java-Themen 7
J Zwei sortierte Listen zusammenfassen Allgemeine Java-Themen 8
T Problem mit Listen Allgemeine Java-Themen 8
B binarysearch bei listen mit klassen Allgemeine Java-Themen 4
F Problem mit Java Listen Allgemeine Java-Themen 4
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
C Listen in Java. Anehängter Code nicht ganz klar Allgemeine Java-Themen 19
L Doppelt Verkettete Listen Allgemeine Java-Themen 6
E Verkettete Listen Allgemeine Java-Themen 5
M objekt mit listen Allgemeine Java-Themen 5
G Domainen crawlen & Domainnamen listen -> LANGSAM! Allgemeine Java-Themen 19
M Listen Problem! Allgemeine Java-Themen 26
M doppelt verkettete Listen? Allgemeine Java-Themen 5
M Serialisierte listen ausgeben? Allgemeine Java-Themen 6
F 2 Varianten für synchronisierten Zugriff auf Listen Allgemeine Java-Themen 2
L Welche Collection ist die richtige ? Listen mergen Allgemeine Java-Themen 3
G Synchronisierte Listen. ein Graus Allgemeine Java-Themen 4
M Verknüpfung von Listen Allgemeine Java-Themen 3
S Frage zu ArrayList mit Listen Allgemeine Java-Themen 8
S Fragen zu 4 speziellen Listen Allgemeine Java-Themen 4
D Listen Allgemeine Java-Themen 4
M sortierte listen Allgemeine Java-Themen 5
I Doppelt verkette Listen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben