ArrayList nach Wiederholungen durchsuchen

  • Themenstarter Themenstarter bxf
  • Beginndatum Beginndatum
B

bxf

Gast
Hallo,

ich habe einige Daten aus einer csv in eine ArrayList eingelesen. Die Daten sehen so aus:

KdNr; Status
123; 9
234; 4
234; 10
234; 10
234; 12
567; 8
...

Ich müsste nun die Anzahl der jeweils gleichen KdNr (ohne Status=4) abspeichern: für obiges Beispiel würde es dann so aussehen: 123 = 1, 234 = 3, 567 = 1.

Mein bisheriger Code:
Java:
Map<Integer, MeineBean> myMap = new HashMap<Integer, MeineBean>();
                
        for(MeineBean mb : coll)
        {            
            int key = mb.getKdNr();

            if(myMap.containsKey(key))
            {
                MeineBean mBean = myMap.get(key);
                if(myMap.getStatus() != 4)
                {
                    mapRow.setGesamt(mBean.getGesamt + mb.getGesamt);
                }   
            }
            else
            {
                myMap.put(key, mb);
            }
        }

Aber das funktioniert für die KdNr=234 nicht, da diese zuerst mit dem Status=4 kommt und somit der Key für diesen Wert gesetzt wird.

Welche Alternativen hätte ich noch, um mein Problem zu lösen?

Im Voraus vielen Dank für Eure Antworten.
 
in Zeile 17 auch Status 4 ausschließen?
wobei das in Zeile 10 komisch aussieht, da fragst du von der Map den Status ab?

Status 4 am besten vor der if/else-Unterscheidung prüfen und dieses Objekt dann ganz ignorieren (continue oder wieder if/else)

im Fall, dass der Key schon vorhanden ist, machst du
> mapRow.setGesamt(mBean.getGesamt + mb.getGesamt);
was ziemlich unverständlich ist, mapRow gar nicht bekannt,
vor allem aber: da es auch drei und nicht nur zwei Elemente pro Key geben kannst musst du doch innerhalb der Map immer weiter zählen,

inwiefern das Ergebnis 3 für 234 mit 'mBean.getGesamt + mb.getGesamt' zusammenpasst bleibt ein weiteres Rätsel,
willst du die Anzahl der Vorkommen zählen (3x 234 oder die zugehörigen Werte addieren, 10 + 10 + 12)?
obwohl, das ist ja wiederum der Status, na du machst das schon 😉
 
Also deine ArrayList hält Objekte von MeineBean? Würde das so in der Art machen:

Java:
		Map<Integer, Integer> count = new HashMap<Integer, Integer>();
		for(MeineBean mb : coll) {
			if (mb.getStatus() != 4) {
				Integer currentCount = count.get(mb.getKdNr());
				count.put(mb.getKdNr(), currentCount != null ? currentCount+1 : 1);
			}
		}

check aber deine datenhaltung noch net ganz 🙂.
 
Zuletzt bearbeitet:

Zurück
Oben