Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使不同的树集保持与另一树相同的顺序_Java_Treeset - Fatal编程技术网

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);