# ArrayList aufteilen



## Spezi (14. Sep 2006)

Hi,

ich habe eine arraylist ergebnis. in ergebnis stehen ids z.b.:


```
0101
0102
0204
0208
0309
```

ich möchte aber alle ids mit führendem 01, 02, 03 etc. in 3 verschiedenen arraylists haben...


```
ergbenis1 =
0101
0102

ergebnis2 =
0204
0208

ergebnis3 =
0309
```

zusätzlich ändert sich die arraylist auch und so kann es passieren das völlig andere ids darin stehen:


```
0101
0102
0309
0405
0404
0808
0910
0911
```

hat vielleicht jemand einen vorschlag wie ich das lösen könnte??



gruß
sebastian


----------



## SlaterB (14. Sep 2006)

for (String st: list) {
if st.startsWith("01") {
..
} else {
..
}

}


----------



## Spezi (14. Sep 2006)

und wie mache ich es, wenn sich die id's immer wieder verändern, dh am anfang nicht immer konstant sind, es können auch neue hinzugefügt werden, was bedeutet ich müsste 10 mal if else im code stehen haben, wenn nicht irgendwann noch mehr... und wie speichere ich es in verschiedene arraylists ab? kann ich dynamisch namen vergeben??


----------



## SlaterB (14. Sep 2006)

so kann man doch nicht fragen,
da musst du schon genauer erklären wann sich das updated,
und warum du dann nicht nochmal die Liste durchlaufen kannst
(Tipp: man sollte gleichen Code immer in eine Operation auslagern)

edit: ach du meinst die 01, 02, usw.,
die kannst du auch in ein String-Array tun und dann per Schleife prüfen,
die Teilisten sind dann auch wieder in einem Array gleichen Länge
--------

"wie speichere ich irgendwas in Java ab"?
da dazu fällt mir ja gar nix mehr ein


----------



## Spezi (14. Sep 2006)

ok  eine for schleife läuft durch und vergleicht zwei arraylists miteinander. die eine ist dynamisch (ergebnis) und wird bei jedem durchlauf neu befüllt. in beiden stehen die bereits erwähnten ids.


```
ergebnis(dynamisch)            vergleich(konstant)
0101                                   0101
0102                                   0102
0202                                   0304
0203 
0303
0304
```

die bedingung für den vergleich ist true, solange mindestens ein 01xx im ergebnis vorkommt. dies gilt natürlich auch für alle anderen ids aus der liste vergleich


----------



## SlaterB (14. Sep 2006)

aha, gut zu wissen 

oder soll das mit irgendeiner deiner Fragen was zu tun haben?


----------



## Spezi (15. Sep 2006)

das hat insofern etwas damit zu tun, da ich vorhatte das array ergebnis aufzuteilen, um dann alle z.b. 01xx mit dem array vergleich zu überprüfen


----------



## SlaterB (15. Sep 2006)

(falls du zu deinem Vorhaben noch eine Frage hast, so musst du die immer noch stellen)


----------



## Spezi (15. Sep 2006)

SlaterB hat gesagt.:
			
		

> for (String st: list) {
> if st.startsWith("01") {
> ..
> } else {
> ...



das


```
for (String st: list)
```

wird bei mir als fehler markiert, und zwar einmal als Syntax error bezüglich des for statements und dann ein mir unbekannter fehler: Can only iterate over an array

mein code sieht folgendermaßen aus:

```
ArrayList anzeigenListe = anzeigenToArrayList(e); //befüllen meiner arraylist

for (String teil: anzeigenListe){
// führe weiteren code aus                    		
}
```

warum funktioniert das nicht??


----------



## Spezi (15. Sep 2006)

SlaterB hat gesagt.:
			
		

> edit: ach du meinst die 01, 02, usw.,
> die kannst du auch in ein String-Array tun und dann per Schleife prüfen,
> die Teilisten sind dann auch wieder in einem Array gleichen Länge



wie bringe ich die ids in die teillisten von denen du gesprochen hast?


----------



## SlaterB (15. Sep 2006)

> wird bei mir als fehler markiert, und zwar einmal als Syntax error bezüglich des for statements und dann ein mir unbekannter fehler: Can only iterate over an array 

wenn du nicht Java5 hast, funktionieren einige höhere Code-Konstrukte nicht,

for (String st: list) {
}

kann man z.B. durch 

for (k=0; k<list.size(); k++) {
  String st = (String) list.get(k);
}

ersetzen

--------------------------

> wie bringe ich die ids in die teillisten von denen du gesprochen hast?

durch Widerholung von Fragen kommst du auch nicht weiter,
ich weiß nach wie vor nicht worum es geht,
kann daher nur allgemeines antworten wie 'Schleifen + Arrays benutzen',

wie ich mir das vorstelle:


```
package test;

import java.awt.Point;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;

public class Test {

    public static void main(String[] args) throws Exception {
        p("Start");

        ArrayList<String> liste = new ArrayList<String>();
        liste.add("0101");
        liste.add("0102");
        liste.add("0202");
        liste.add("0203");
        liste.add("0303");
        liste.add("0304");

        String[] trennArray = new String[] { "01", "02", "03" };
        ArrayList[] teilListenArray = new ArrayList[trennArray.length];
        for (int i = 0; i < trennArray.length; i++) {
            teilListenArray[i] = new ArrayList();
        }

        p("Liste: " + liste);

        for (String st : liste) {
            for (int i = 0; i < trennArray.length; i++) {
                if (st.startsWith(trennArray[i])) {
                    p(st + " startsWith " + trennArray[i]);
                    teilListenArray[i].add(st);
                    break;
                }
            }
        }

        p("Teillisten: ");
        for (int i = 0; i < trennArray.length; i++) {
            p(teilListenArray[i]);
        }

        p("End");

    }

    public static void p(Object o) {
        System.out.println(o == null ? o : o.toString());
    }

}
```

Ausgabe:
Start
Liste: [0101, 0102, 0202, 0203, 0303, 0304]
0101 startsWith 01
0102 startsWith 01
0202 startsWith 02
0203 startsWith 02
0303 startsWith 03
0304 startsWith 03
Teillisten: 
[0101, 0102]
[0202, 0203]
[0303, 0304]
End


----------

