Mehrere ArrayList sortieren

Sergunja

Grünschnabel
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
 
Code:
// 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);
}
 
Hallo!

Versuchs mal so:
Code:
/*
 * 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
 
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
 
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
 
Ü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!
 
Zuletzt bearbeitet:
Dann eben so:
Code:
/*
 * 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
 
Zurück