# ArrayList aus Point-Objekten nach dem x-Wert ordnen



## Jay1980 (21. Apr 2009)

Servus,

das krieg ich bis jetzt nicht hin:

Ich habe eine ArrayList mit 5 Point-Objekten, aber wie sortiere ich die, nach dem x-Wert. Ich fand da kein Beispiel, da in Java6 wohl eine Parametrisierung vom Comparable-Interface dazu kam und die Sachen aus der Insel und aus dem Java-Sun-Tutorial kann ich nicht auf meine ArrayList-Point-Geschichte umlegen.

Vielleicht kann ja einer von euch mal den Code posten.

Mein bisheriger Code, falls jemand sehen will, dass ich da wenigstens was probiert habe, oder er die Bezeichner so übernehmen will, im Endeffekt ist da bei mir bis jetzt nichts zusammen gegangen, ich weiss auch nicht ob ich da umbedingt eine eigene Klasse anlegen muss ala class JobaPoint extends Point implements Comparable oder ob ich die Schnittstelle von meiner Klasse JobaDrawPanel implementieren lasse, dann aber Point-Objekte vergleichen lasse. Wie gesagt, ich hoffe auf einen deftigen Aha-Effekt wenn ich den richtigen Code gesehen habe:


```
public final class JobaDrawPanel extends JPanel implements ISmallestCircleCalculator, Comparable<Point>
{

.....

/** Array-Liste aus Point-Objekten, die auf der Zeichenfläche landen und mit Strichen verbunden werden */
	private static ArrayList<Point> jobaConvexHullPoints;
.....

public static void computeDummyConvexHull()
	{
		JobaLog.gi().cons("M computeDummyConvexHull ist da.");
		
		// 5 Dummypunkte anlegen
		Point pOne = new Point( 56, 89 );
		Point pTwo = new Point( 350, 200 );
		Point pThree = new Point( 23, 543 );
		Point pFour = new Point( 343, 444 );
		Point pFive = new Point( 500, 100 );
		
		// 5 Dummypunkte anfügen
		JobaDrawPanel.jobaConvexHullPoints.add(pOne);
		JobaDrawPanel.jobaConvexHullPoints.add(pTwo);
		JobaDrawPanel.jobaConvexHullPoints.add(pThree);
		JobaDrawPanel.jobaConvexHullPoints.add(pFour);
		JobaDrawPanel.jobaConvexHullPoints.add(pFive);
		
		// PunktArrayList sortieren
		// mit Comparable Interface gemacht
		
		
		
	}
	
	public int compareTo(Point p) 
	{
		return (int)p.getX();
	}
```


----------



## SlaterB (21. Apr 2009)

erstelle einen Comparator für Point

Comparable und Comparator | helmchen.ch
bzw. andere google-Links

----------

mal nebenbei

>        JobaDrawPanel.jobaConvexHullPoints.add(pOne);
>        JobaDrawPanel.jobaConvexHullPoints.add(pTwo);
>        JobaDrawPanel.jobaConvexHullPoints.add(pThree);
>        JobaDrawPanel.jobaConvexHullPoints.add(pFour);
>        JobaDrawPanel.jobaConvexHullPoints.add(pFive);


List l =         JobaDrawPanel.jobaConvexHullPoints;
l.add(pOne);
l.add(pTwo);
l.add(pThree);
l.add(pFour);
l.add(pFive);


----------



## dayaftereh (21. Apr 2009)

Hey,

ich weiß nicht in welche richtung Sortiren aber ich würde das ganze so machen:


```
import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortList {

	public static void main(String[] args) {
		List<Point> points = new ArrayList<Point>();

		points.add(new Point(10, 48));
		points.add(new Point(-1, 48));
		points.add(new Point(6, 48));
		points.add(new Point(4, 48));

		for (Point point : points) {
			System.out.println(point);
		}

		Collections.sort(points, new Comparator<Point>() {
			@Override
			public int compare(Point o1, Point o2) {
				Integer x1 = new Integer(o1.x);
				Integer x2 = new Integer(o2.x);
				return x1.compareTo(x2);
			}

		});

		System.out.println("----------");

		for (Point point : points) {
			System.out.println(point);
		}

	}

}
```

Na ja vielicht hilft es dir ein wenig^^


----------

