Подтвердить что ты не робот

Сортировка LinkedHashSet

Мне интересно, можно ли сортировать LinkedHashSet. Я пробовал утверждение

Collections.sort((List<Comparable> paragraph);

Однако это просто порождает ошибку, которую нельзя вставить в список. Есть ли способ сделать это, или я должен использовать другую структуру данных?

4b9b3361

Ответ 1

Вы должны использовать SortedSet, например TreeSet или ConcurrentSkipListSet, если вы хотите упорядочить на основе сравнения (например, отсортированный порядок).

A LinkedHashSet сохраняет порядок на основе порядка вставки.

Если вы действительно хотите использовать Collections.sort, вы можете преобразовать LHS в список, фактически создав List (хотя вопрос не говорит нам о типе paragraph, поэтому я предполагаю, что это String)

List<String> listParagraph = new ArrayList<String>(paragraph);
Collections.sort(listParagraph)

но это, вероятно, не лучший подход.

Ответ 2

Collections.sort не работает на Set s, только на List s. Если вам нужно отсортировать данные, уже находящиеся в Set, вы можете сначала добавить их в List.

Ответ 3

Вы можете добавить объект LinkedHashSet (связанныйHashSet) в TreeSet, и он будет отсортирован.

TreeSet<T> treeSet = new TreeSet<t>();
treeSet.addAll(linkedHashSet);

treeSet - это отсортированный набор.

Обратите внимание, что вам необходимо сделать эти типы T сопоставимыми (путем реализации интерфейса Comparator).

Ответ 4

Да, ты можешь. Java 8 сделала нашу жизнь проще :)

создание связанного списка (это выглядит просто для меня, вы можете напрямую вставить в LinkedHashSet)

LinkedList<String> lList = new LinkedList<String>();
lList.add("Ravi");
lList.add("Vijay");
lList.add("Ravi");
lList.add("Ajay");
lList.add(null);

LinkedHashSet<String> lHashSet = new LinkedHashSet<>();
lHashSet.addAll(lList);

давай сортируем сейчас

lHashSet.stream().sorted((String s1,String s2)->{       
    return s1.compareTo(s2);
});

//now print it
System.out.println("----");
lHashSet.forEach(action->{
   System.out.println(action);
});
System.out.println("----");

Удачного кодирования :)