我想知道是否可以对 LinkedHashSet 进行排序。我已经尝试过声明
Collections.sort((List<Comparable> paragraph);
但是,这只会引发一个错误,即无法将其转换为列表。有没有办法做到这一点,或者我应该使用另一个数据结构?
如果您关心基于比较的排序(例如,排序顺序),您应该使用SortedSet
诸如此类。TreeSet
ConcurrentSkipListSet
ALinkedHashSet
保留基于插入顺序的顺序。
如果您真的想使用Collections.sort
,您可以通过实际构造 a 将 LHS 转换为 List List
(尽管问题没有告诉我们的类型,paragraph
所以我假设它是String
)
List<String> listParagraph = new ArrayList<String>(paragraph);
Collections.sort(listParagraph)
但这可能不是最好的方法。
Collections.sort不适用于Set
s,仅适用于List
s。如果您需要对 a 中已有的数据进行排序Set
,您可能需要先将它们添加到 aList
中。
您可以将 LinkedHashSet 对象(linkedHashSet)添加到 TreeSet,它将被排序。
TreeSet<T> treeSet = new TreeSet<t>();
treeSet.addAll(linkedHashSet);
treeSet 是排序集。
请注意,您需要使这些 T 类型具有可比性(通过实现 Comparator 接口)。
是的你可以。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("----");
输出-
----
Ravi
Vijay
Ajay
null
----
快乐编码:)