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