Почему я не могу вызвать Collections.sort () в моем ArrayList <T>? - PullRequest
6 голосов
/ 06 марта 2012

Для тех, у кого может возникнуть такой вопрос, вам, вероятно, нужен «Collections.sort», а не «Collection.sort», ошибка, которую я сделал ниже.

Я определил класс, определенный как

public class Store implements Serializable, Comparable<Store> { ... }

У меня есть поле в другом классе, определенное как:

ArrayList<Store> fStores = new ArrayList<Store>();

Я хочу отсортировать эту коллекцию, поэтому в методе, который я вызываю:

Collection.sort(fStores);

Однако, Я получаю следующую ошибку компиляции:

The method sort(ArrayList<Store>) is undefined for the type Collection

ArrayList реализует List, а из документации:

public static <T extends Comparable<? super T>> void sort(List<T> list)

Итак, почему я получаю ошибку?Я также попытался создать своего собственного потомка Comparator и передать его методу сортировки без удачи.

Я предполагаю, что что-то есть в ">". Я непонимание ...?

Ответы [ 8 ]

7 голосов
/ 06 марта 2012

Есть в основном две вещи, на которые вам нужно посмотреть:

Коллекции

Из Коллекций

Этот класс состоит исключительно из статических методов, которые работают или возвращают коллекции.Он содержит полиморфные алгоритмы, которые работают с коллекциями, «обертки», которые возвращают новую коллекцию, подкрепленную указанной коллекцией, и несколько других шансов и окончанийэтот тип алгоритмов использует это.

Далее: ->

Коллекция

Это интерфейс, который обеспечивает основу платформы сбора Java.Он не включает карту и отсортированную карту.Он представляет группу объектов, известных как его элементы, и имеет реализации для конкретных реализаций.Вы должны подумать об этом, когда вы хотите работать с ArrayLists и Maps.

Итак, в итоге, у вас есть статический алгоритм для запуска, который присутствует в коллекциях.Итак, используйте Collections.sort

3 голосов
/ 06 марта 2012

Вам нужно написать Collections вместо Collection.Они связаны, но разные.: -)

1 голос
/ 08 июля 2015

Если вы попали сюда из-за похожей ошибки:

Метод sort (Comparator <...>) не определен для типа List <...>

Тогда вы, вероятно, используете JDK ниже, чем 1,8 . Измените его в Java Build Path:

enter image description here

1 голос
/ 06 марта 2012
1 голос
/ 06 марта 2012

Ваша проблема в том, что вы звоните Collection.sort(), а не Collections.sort()

Это два отдельных класса:

Коллекция

Коллекция

Коллекция - это интерфейс, а коллекция - это служебный класс.

1 голос
/ 06 марта 2012

Это Collections.sort () с s.

import java.util.Collections и с вами все будет в порядке.

1 голос
/ 06 марта 2012

Вы имели в виду Collections.sort() (множественное число сборников)?

0 голосов
/ 18 декабря 2014

Кроме того, если вы используете eclipse, дважды проверьте правильность оператора импорта для коллекций!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...