Java 使不同的树集保持与另一树相同的顺序
假设我有一个自然有序的树集。我可以使用什么界面和方法来创建一个新的树集,并保持与第一个列表相同的顺序。使用相同的Java 使不同的树集保持与另一树相同的顺序,java,treeset,Java,Treeset,假设我有一个自然有序的树集。我可以使用什么界面和方法来创建一个新的树集,并保持与第一个列表相同的顺序。使用相同的比较器(或者naturalOrder,如果您的元素实现了Compariable): 类A实现了可比较的{} 最终树集firstSet=新树集(); final TreeSet secondSet=新树集(firstSet.comparator()); 最终树集secondSetNaturalOrder=新树集(Comparator.naturalOrder()); 执行此操作并不需要树
比较器(或者naturalOrder
,如果您的元素实现了Compariable
):
类A实现了可比较的{}
最终树集firstSet=新树集();
final TreeSet secondSet=新树集(firstSet.comparator());
最终树集secondSetNaturalOrder=新树集(Comparator.naturalOrder());
执行此操作并不需要树集。您可以使用LinkedHashSet()
但是对于TreeSet
,集合是按对象的自然顺序进行排序的
Set<Integer> set2 = new TreeSet<>();
set2.addAll(list);
list.sort(Comparator.naturalOrder());
Comparator
定义顺序您的意思是只新树集(旧树集)
?(甚至不尝试重新比较元素,只要旧的树集上没有比较器
)
List<Integer> list = new ArrayList<>(List.of(10,3,2,2,1,20,40,2));
Set<Integer> set1 = new LinkedHashSet<>();
set1.addAll(list);
System.out.println("set1 = " + set1);
System.out.println("list = " + list);
Set<Integer> set2 = new TreeSet<>();
set2.addAll(list);
list.sort(Comparator.naturalOrder());
System.out.println("set2 = " + set2);
System.out.println("list = " + list);