# Mehrere ArrayList sortieren



## Sergunja (19. Oktober 2004)

Hallo 
Ich habe mehrere ArrayList, wo drin float[] felder sind, jetzt will ich die sortiren und felder raussuchen, bei denen erste Elemente gleich sind.
Soll ich alle List zuerst verbinden(wie geht es?) und dann sort methode anwenden?

Danke für Antwort


----------



## Christian Fein (19. Oktober 2004)

```
// listOne ist eine ArrayList
// listTwo ist die nächste ArrayList

// list hier sollen die doppelten Werte rein
ArrayList list = new ArrayList();

Iterator iterator = listOne.iterator();
while(iterator.hasNext()) {
      Object obj = iterator.next();
       if(listTwo.contains(obj)) 
                    list.add(obj);
}
```


----------



## Sergunja (20. Oktober 2004)

Und es ist möglich mehrere ArrayLIst zu verbinden? Dann später mit allen Elementen zu arbeiten.
danke


----------



## Thomas Darimont (20. Oktober 2004)

Hallo!

Versuchs mal so:

```
/*
 * Created on 20.10.2004
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Darimont
 *  
 */
public class Test22 {

    public static void main(String[] args) {
        List l0 = new ArrayList(), l1 = new ArrayList(), l2 = new ArrayList();
        l0.add("a0");
        l0.add("a1");
        l0.add("a2");

        l1.add("b0");
        l1.add("b1");
        l1.add("b2");

        l2.add("c0");
        l2.add("c1");
        l2.add("c2");

        l0.addAll(l1);
        l0.addAll(l2);

        System.out.println(l0);
    }
}
```

Gruß Tom


----------



## Sergunja (20. Oktober 2004)

Danke, jetzt habe ich die alle zur List gemacht, aber wenn ich jetzt Collections.sort( List lst ) anwende kommen Fehler.Geht es nicht so, oder mach ich was falsch. :suspekt: 
Wie gesagt ich will die nach ersten element, der im float[] steht, sortieren

Danke


----------



## torsch2711 (20. Oktober 2004)

Was für fehler werden denn angezeigt? 
Wäre hilfreich wenn Du etwas konkreter auf die Fehlermeldungen eingehen würdest und Sie vielleicht hier sogar posten würdest. 
Ich kann leider noch nicht hellsehen. 

Grüsse

Torsten


----------



## torsch2711 (20. Oktober 2004)

Übrigens hier ist noch ein kleiner Auszug aus der sort-Methode für die Klasse Collections:

Sorts the specified list into ascending order, according to the natural ordering of its elements. All elements in the list must implement the Comparable interface. Furthermore, all elements in the list must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the list).

Implementieren floats das Interface Comparable? Nein, tun Sie nicht. float sind in diesem Sinne keine Klasse.

Probiere es so: Konvertiere die floats in die Klasse Float (diese implementiert Comparable) und dann funktioniert das auch mit dem Sortieren.

Sprich Float neuerFloatWert=new Float(deinefloat);
Und diese Floatlassen musst du dann in die Liste eintragen statt der float.

Grüsse Torsten


P.S.: Um den Moderatoren vorzugreifen: Sorry, ich hab aus Versehen eine neue Antwort geschrieben, anstatt meine vorhergehende zu editieren!


----------



## Thomas Darimont (20. Oktober 2004)

Dann eben so:

```
/*
 * Created on 20.10.2004
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * @author Darimont
 *  
 */
public class Test22 {

    public static void main(String[] args) {

        List l0 = new ArrayList(), l1 = new ArrayList(), l2 = new ArrayList();

        l0.add(new float[] { 3.5F, 3.1F });
        l0.add(new float[] { Float.MAX_VALUE, 3.3F });
        l0.add(new float[] { 7.0F, 3.7F });

        l1.add(new float[] { 4.5F, 3.9F });
        l1.add(new float[] { 4.2F, 23890.123F });
        l1.add(new float[] { Float.MIN_VALUE, 2332.9F });

        l2.add(new float[] { 4.312F, 11222.2F });
        l2.add(new float[] { 4.32F, 81.2F });

        l0.addAll(l1);
        l0.addAll(l2);

        Collections.sort(l0, new Comparator() {
            public int compare(Object o1, Object o2) {
                float f1 = ((float[]) o1)[0], f2 = ((float[]) o2)[0];
                return Float.compare(f1,f2);
            }
        });

        Object[] o = l0.toArray();
        for (int i = 0; i < o.length; i++) {
            float[] fA = (float[]) o[i];
            for (int j = 0; j < fA.length; j++)
                System.out.print(fA[j] + " ");
            System.out.println();
        }
    }
}
```

Gruß Tom


----------



## Sergunja (20. Oktober 2004)

Danke Jungs !
Das war die Fehler mit Cast von float


----------

