Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Сортировка массива объектов

#массивы #java


Есть свой класс A с одним из полей String p. в программе создается массив A arr[]
= new A[n].    
Можно ли создать такой метод класса A, чтобы сортировать массив элементов этого класса
по полю p.
То есть интересует, чтоб вызов функции был вида arr.sort();, но обращение было к
функции sort класса A.    


Ответы

Ответ 1



Ваш класс A может реализовать интерфейс java.lang.Comparable и в методе compareTo сравнивать свой экземпляр с другим экземпляром. После чего вы смело можете пользоваться методом sort из класса Arrays.

Ответ 2



Сам в этой области чайник. Поэтому думаю, что совершенно верный ответ @Nofate может быть полезно подкрепить конкретным примером. import java.util.*; public class SortTest { public static void main (String [] av) { A [] arr = new A[4]; arr[0] = new A(12,"x12"); arr[1] = new A(16,"x16"); arr[2] = new A(1,"x1"); arr[3] = new A(62,"x62"); Arrays.sort(arr); for (A a : arr) System.out.println(a); } } class A implements Comparable { private int p; private String s; A() {} A(int v, String b) { p = v; s = b; } @Override public int compareTo(Object arg) { return p - ((A)arg).p; } public String toString() { return p+"=> "+s; } } Сам только учусь Java. Поэтому (вот и вопрос к знатокам - почему ?) arr.sort() не получилось, Eclipse говорит: нет такого метода для arr. (А может так и нельзя писать ? Всего сразу не упомнить). Поэтому Arrays.sort(arr);

Комментариев нет:

Отправить комментарий