doppeltes vorkommen in arraylist löschen

Neue Frage »

Auf diesen Beitrag antworten »
Haevelin doppeltes vorkommen in arraylist löschen

in einer ArrayList werden zusammengehörige Paare immer nacheinander abgespeichert; nun kann es vorkommen, dass zusammengehörige Paare darin mehrmals vorkommen. Wie lösche ich das mehrmalige Vorkommen zusammengehöriger Paare in einer ArrayList?
 
Auf diesen Beitrag antworten »
Haevelin RE: doppeltes vorkommen in arraylist löschen

Folgenden Code stelle ich vor, der aber nicht funktioniert:

ArrayList<String> kreuzung_copy= new ArrayList<String>();
if (kreuzung.size()>1){
kreuzung_copy.add(kreuzung.get(0));
kreuzung_copy.add(kreuzung.get(1));
for (int z=0; z<kreuzung.size()-2Augenzwinkern {
boolean gefunden=false;
for (int t=0; t<kreuzung_copy.size()-1Augenzwinkern {
if (kreuzung_copy.get(t).equals(kreuzung.get(z))&& kreuzung_copy.get(t+1).equals(kreuzung.get(z+1))){
gefunden = true;
//System.out.println("Double gefunden");
//System.exit(0);
break;
}
t+=2;



}
if(!gefunden){
kreuzung_copy.add(kreuzung.get(z));
kreuzung_copy.add(kreuzung.get(z+1));

}
z+=2;

}

} // ende if
Auf diesen Beitrag antworten »
eulerscheZahl

Was hast du gegen CODE Tags?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
public class Main {
	public static ArrayList<String> removeDublicates(ArrayList<String> kreuzung) {
		ArrayList<String> kreuzung_copy = new ArrayList<String>();
		for (int z = 0; z < kreuzung.size() - 1; z += 2) {
			boolean gefunden = false;
			for (int t = z - 2; t >= 0; t -= 2) { //nur erstes Vorkommen bleibt
				//for (int t = z + 2; t < kreuzung.size() - 1; t += 2) { //nur letztes Vorkommen bleibt
				if (kreuzung.get(t).equals(kreuzung.get(z)) && kreuzung.get(t + 1).equals(kreuzung.get(z + 1))) {
					gefunden = true;
					break;
				}
			}
			if (!gefunden) {
				kreuzung_copy.add(kreuzung.get(z));
				kreuzung_copy.add(kreuzung.get(z + 1));

			}
		}
		return kreuzung_copy;
	}

	public static void main(String[] args) {
		ArrayList<String> test = new ArrayList<String>();
		test.add("1");
		test.add("2");
		test.add("3");
		test.add("4");
		test.add("1");
		test.add("2");
		System.out.println(Arrays.toString(removeDublicates(test).toArray()));
	}
}


Schon mal über eine andere Datenstruktur nachgedacht?
Mit HashMap<HashSet<String>> hast du auch Paare und verhinderst doppelte Einträge. Je nach Verwendungszweck gibt es bestimmt auch geeignetere Wege.
Auf diesen Beitrag antworten »
Haevelin

Danke, funktioniert prima
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »