Variablen Array in ArrayList auf doppelte Einträge überprüfen

steve22

Neues Mitglied
Hallo zusammen,

ich habe eine String ArrayList variabler Länge indem ein String Array eingefügt ist.
Das String Array hat später eine feste Größe von 3 Elementen, z.B. {Vorname, Nachname, Alter}, welche ich aus einer Excel Tabelle auslese.

Java:
 public void einlesen(){
     private ArrayList<String[]> Vektoren = new ArrayList<String[]>();
     for(int j=0; j< sheet.getRows(); j++){
         Cell vornameCell = sheet.getCell(0, j);
         Cell nachnameCell = sheet.getCell(1, j);
         Cell alterCell = sheet.getCell(2, j);
         String[] vec = new String[] {vornameCell.getContents(), nachname.getContents(), alter.getContents()};
         Vektoren.add(vec);
     }
 }
[/Java]

Soweit so gut. Diese ArrayList kann ich später auch relativ leicht auslesen:
[code=Java]
  public void getVektoren(){
      System.out.println("Gebildete Vektoren: " +Vektoren.size());
      for(String [] arr : Vektoren){
            for(String s : arr){
	         System.out.println(s);
	      }
	  }
  }
[/Java]

Es kann nun aber passieren, dass einzelne String Arrays komplett identisch sind, also Vorname, Nachname, Alter. Diese "Doppler" in der ArrayList will ich finden und eine Meldung ausgeben, wo sich diese befinden.
Alle meine Versuche liefen bis jetzt fehl.Kann mir von euch jemand bitte helfen, wie ich das am besten anstelle?:)

Mein Ansatz war wieder, zuerst die ArrayList in einer for-Schleife zu druchsuchen aber dann???:L
[code=Java]
  public void getDoppler(){
      int i = Vektoren.size();
      System.out.println(i);
      for(String[] arr : fnVektoren){
          ???????
      }
  }
[/Java]
 
Hi,
diese Methode habe ich mir selber mal in einem Projekt geschrieben, um doppelte Einträge zu löschen:

Java:
private void duplikateLoeschen()
{
ArrayList<Spiel> temp = new ArrayList<Spiel>();
		for(Spiel aSpiel : alleSpiele)
		{
			boolean enthalten = false;
			for(Spiel bSpiel : temp)
			{
				if(bSpiel.equals(aSpiel))
				{
					enthalten = true;
				}
			}
			if(!enthalten)
			{
				temp.add(aSpiel);
			}
		}
		alleSpiele = temp;
}

Vielleicht hilft dir das
gruß
 
Zuletzt bearbeitet:
Jo die for-Schleife wird nötig sein um alles zu durchsuchen. Aber so bekommst du immer nur das aktuelle array. Du solltest es mal mit 2 geschachtelten for-Schleifen versuchen. Beide durchsuchen die Vektoren und so bekommst du 2 Arrays die du miteinander vergleichen kannst.

Das hier habe ich gerade zusammengeschustert:

Java:
for(String[] compArray1 : vektoren) {
    for(String[] compArray2 : vektoren) {
            // Überprüfen ob man das selbe Array miteinander vergleicht
            if(vektoren.indexOf(compArray1) == vektoren.indexOf(compArray2)) {
                System.out.println(vektoren.indexOf(compArray2));
                break;
            }
            if(compArray1[0].equals(compArray2[0])
                    && compArray1[1].equals(compArray2[1])
                    && compArray1[2].equals(compArray2[2])) {
                System.out.println("Doppeltes Array gefunden");
        }
    }
}
 
Zuletzt bearbeitet:
so ginge es auch, aber in meinem programm musste ich eben das Array "aktualisieren", also Duplikate rauslöschen.

was du auch benutzen könntest wäre ein HashSet, da werden nur verschiedene Einträge gespeichert.
 
Zuletzt bearbeitet:
hey vielen Dank für eure schnellen Antworten!
Jetzt funktioniert es! habe es wie sirkarpfen gemacht! das sollte fürs erste so passen!:applaus:
 

Zurück
Oben