Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- doppeltes vorkommen in arraylist löschen (http://www.informatikerboard.de/board/thread.php?threadid=3019)
Geschrieben von Haevelin am 10.05.2016 um 20:36:
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?
Geschrieben von Haevelin am 10.05.2016 um 22:03:
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()-2

{
boolean gefunden=false;
for (int t=0; t<kreuzung_copy.size()-1

{
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
Geschrieben von eulerscheZahl am 11.05.2016 um 06:45:
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.
Geschrieben von Haevelin am 11.05.2016 um 10:27:
Danke, funktioniert prima
Forensoftware: Burning Board, entwickelt von WoltLab GmbH