Как отсортировать массив объектов (точек) в Java? - PullRequest
3 голосов
/ 20 июня 2010

Итак, я хочу отсортировать массив точек, используя встроенный метод сортировки, по определенной координате, скажем, x. Как я могу это сделать? Вот пример кода:

Point A[] = new Point[10];
// ... Initialize etc.
Arrays.sort(A, x-coordinate);

Есть ли встроенный компаратор для x-координат в Point Class? Если нет, то как я могу его создать и использовать. Пример был бы великолепен.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 20 июня 2010

Point не Comparable, поэтому вам нужно написать собственный компаратор и передать его при вызове Arrays.sort. К счастью, это не так сложно:

class PointCmp implements Comparator<Point> {
    int compare(Point a, Point b) {
        return (a.x < b.x) ? -1 : (a.x > b.x) ? 1 : 0;
    }
}

Arrays.sort(A, new PointCmp());
2 голосов
/ 20 июня 2010

Вы также можете использовать Apache Commons Bean Comparator

http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/BeanComparator.html

А затем сделать что-то вроде

import org.apache.commons.beanutils.BeanComparator;

Arrays.sort(A, new BeanComparator("x"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...