Kumulieren von Elementen in einen Array

minjin22

Mitglied
Hallo allerseits,

und zwar bräuchte ich Hilfe bei einer Schleife, die nicht ganz heute will (Kopfschmerzen).
Ich habe eine ArrayList des Typen String und es befinden sich Strings und leere Strings in ihr.

Hier ein Beispiel:

Java:
ArrayList<String> liste = new ArrayList<String>(); 
liste.add("Haus");
liste.add(""); 
liste.add("");
liste.add("Hund"); 
liste.add("");
liste.add(""); 

//usw.....

Diese Liste wird immer mit anderen Werten befüllt, das heißt ich weiß nicht was sich innen drin für Elemente befinden.

Nun wollte ich in einer neuen ArrayListe<Integer>, die befüllte Liste iterieren und schauen wieviele Elemente sich bis zum nächsten befinden.

Ein Bespiel:

Java:
int counter = 0;
 
ArrayList<Integer> sizeOfListe = new ArrayList<Integer>(); 

for(int i=0; i<liste.size(); i++) {

if(liste.get(i)=="") {
     count+=1;
if(liste.get(i)!="") {
    count+=1; 
    continue;
   sizeOfListe.add(count);

}
 } 
}


// Ergebnis des ganzen sollte sein

   sizeOfListe.get(0) = 3
   sizeOfListe.get(1) = 3


Ich habe überlegt das mit ein Iterator zu machen, aber ich habe heute so Kopfschmerzen das gar nix klappt. Falls ich auf eine Idee kommen, werde ich diesen Beitrag bearbeiten und die Lösung rein schreiben. Vielen Dank!

Bitte helft mir :rtfm::-(
 
Zuletzt bearbeitet von einem Moderator:
Was funktioniert denn bei deinem Ansatz nicht?

Auf den leeren String würde ich zwar mit "".equals(list.get(i)) prüfen, aber ansonsten müsste dein Ansatz doch funktionieren:

Java:
int countEmptyStringsOf(List<String> liste){
  int count = 0;
  for(int i=0; i<liste.size(); i++) {
    if("".equals(liste.get(i)) {
      count++;
    }
  } 
  return count;
}
 
Ich möchte das die Elemente im Array gezählt werden, also das sogesagt Gruppen enstehen. Zum Beispiel

[0] = Hund+""+"" = 3 Elemente
[1] = Katze+""+"" = 3 Elemente

Ich möchte nicht wissen wieviel leerzeichen insgesamt in meiner ArrayListe sind.
 
Du mist das anders angehen.

Du setzt for der Schleife count auf 1 und läst die Schleife erst ab 1 und nicht ab 0 zählen.
Dann kommt als erstes ein IF ob der Inhalt (i) !="" ist. Wenn ja, dann addest du den count zu deiner Liste, setzt den count auf 1 und machst ein Continue. Hinter dem if machst du dann nur noch einen count++. Hinter dervschleife must du noch einen add machen mit dem aktuellen count um auch den letzten noch wegzuschreiben.

Gruss

Claus
 
Zuletzt bearbeitet:
Oh mann Thallius, aus der Beschreibung werd' ja nicht mal ich schlau, ohne es dreimal zu lesen.

Auf jeden Fall ist der Algorithmus Murks; neben handwerklichem (
  • heißt dein Zähler 'count' oder 'counter'?
  • Stringvergleiche immer mit .equals()
) ist auch die {}-Klammersetzung sicher nicht richtig.

Ich schage vor, du löschst das ganze nochmal, und schreibst es neu.
Beim zweiten Mal wird's gleich deutlich besser, glaub' mir.
(Hab' selbst schon mal ein und dasselbe Programm 5 Mal programmiert, danach war's Spitzenklasse ~ war aber noch zu Teenager-Zeiten; im Studium lernt man dann, wie man's beim 1. Mal akzeptabel und beim 2. Mal sehr gut hinkriegt 😳)
 
Oh mann Thallius, aus der Beschreibung werd' ja nicht mal ich schlau, ohne es dreimal zu lesen.

Auf jeden Fall ist der Algorithmus Murks; neben handwerklichem (
  • heißt dein Zähler 'count' oder 'counter'?
  • Stringvergleiche immer mit .equals()
) ist auch die {}-Klammersetzung sicher nicht richtig.

Ich schage vor, du löschst das ganze nochmal, und schreibst es neu.
Beim zweiten Mal wird's gleich deutlich besser, glaub' mir.
(Hab' selbst schon mal ein und dasselbe Programm 5 Mal programmiert, danach war's Spitzenklasse ~ war aber noch zu Teenager-Zeiten; im Studium lernt man dann, wie man's beim 1. Mal akzeptabel und beim 2. Mal sehr gut hinkriegt 😳)

Ich werde trotzdem nicht anfangen den Leuten hier fertigen Code zu schreiben. Die sollen ruhig selber denken 😉

Gruß

Claus
 
Ich werde trotzdem nicht anfangen den Leuten hier fertigen Code zu schreiben. Die sollen ruhig selber denken 😉

Gruß

Claus


Thallius vielen Dank!!! Du bist mein Held, habe es mit deiner Beschreibung hinbekommen. Ich hatte das schon so ähnlich gehabt es hat mir einfach nur jemand gefehlt der mich durch das Licht führt!!

Hier die Lösung, für die Leute die was ähnliches suchen:

Java:
public ArrayList<Integer> getSizeOfList(ArrayList<String> list) {
        
        ArrayList<Integer> sizeList = new ArrayList<Integer>();
        int counter = 1; 
        for(int i = 1; i<list.size(); i++) {
            if(list.get(i)!="") {
                sizeList.add(counter);
                counter = 1;
                continue;
            }
            counter++;
        }
        sizeList.add(counter);
        
    return sizeList ; 
    }

Keep it simple!
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben