Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 当我不关心排序时,对对象的ArrayList排序的最简单方法是什么?_Java_Sorting_Arraylist_Java 8 - Fatal编程技术网

Java 当我不关心排序时,对对象的ArrayList排序的最简单方法是什么?

Java 当我不关心排序时,对对象的ArrayList排序的最简单方法是什么?,java,sorting,arraylist,java-8,Java,Sorting,Arraylist,Java 8,我正在将用户定义对象的哈希集转换为这些对象的ArrayList,例如: List<MyObject> myList = new ArrayList<>(myMap.keySet()) 我想对这个列表进行排序,这样每次编译代码时顺序都是相同的 但是,重要的是,我并不关心这些对象是如何排序的。因此,如果可能的话,我宁愿不定义比较器,也不让MyObject实现可比较。最轻量级的方法是什么 但是,重要的是,我并不关心这些对象是如何排序的 这正是番石榴将要做的: 返回所有对象的任

我正在将用户定义对象的哈希集转换为这些对象的ArrayList,例如:

List<MyObject> myList = new ArrayList<>(myMap.keySet())
我想对这个列表进行排序,这样每次编译代码时顺序都是相同的

但是,重要的是,我并不关心这些对象是如何排序的。因此,如果可能的话,我宁愿不定义比较器,也不让MyObject实现可比较。最轻量级的方法是什么

但是,重要的是,我并不关心这些对象是如何排序的

这正是番石榴将要做的:

返回所有对象的任意顺序,对于这些对象,comparea,b==0意味着a==b标识相等。强加的命令没有任何意义,但它在VM的生命周期中是不变的

但是,它不支持您的以下要求:

我想对这个列表进行排序,这样每次编译代码时顺序都是相同的

为此,您需要为对象提供某种标识状态。这可以是,一个施工顺序索引或一个。在不了解更多代码的情况下,没有通用的方法在运行中执行相同的顺序

如果相同的顺序意味着算法产生结果的顺序,那么制作地图,而不是在之后排序。这将根据代码的行为为您提供一个确定的顺序

但是,重要的是,我并不关心这些对象是如何排序的

这正是番石榴将要做的:

返回所有对象的任意顺序,对于这些对象,comparea,b==0意味着a==b标识相等。强加的命令没有任何意义,但它在VM的生命周期中是不变的

但是,它不支持您的以下要求:

我想对这个列表进行排序,这样每次编译代码时顺序都是相同的

为此,您需要为对象提供某种标识状态。这可以是,一个施工顺序索引或一个。在不了解更多代码的情况下,没有通用的方法在运行中执行相同的顺序


如果相同的顺序意味着算法产生结果的顺序,那么制作地图,而不是在之后排序。这将根据代码的行为为您提供一个确定的顺序。

有什么比使用Collections.sortmyList,comparator.comparingMyObject::hashCode这样的比较器更轻量级呢?您说的“每次编译代码”是什么意思?编译代码在这里没有影响。显然,您的意思是运行代码。@daniu无法保证每次运行时都会产生相同的顺序。只是出于好奇,您为什么要这样做?重要的是要知道这是在同一运行时内多次执行此代码还是在不同的JVM实例中多次执行程序。在后一种情况下,“相同顺序”首先需要定义“相同对象”。如果没有这些澄清,这个问题是无法回答的。有什么比使用Collections.sortmyList、comparator.comparingMyObject::hashCode这样的比较器更轻量级?你说的“每次编译代码”是什么意思?编译代码在这里没有影响。显然,您的意思是运行代码。@daniu无法保证每次运行时都会产生相同的顺序。只是出于好奇,您为什么要这样做?重要的是要知道这是在同一运行时内多次执行此代码还是在不同的JVM实例中多次执行程序。在后一种情况下,“相同顺序”首先需要定义“相同对象”。没有这些澄清,这个问题是无法回答的。