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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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_Sorting - Fatal编程技术网

在Java中,按多个其他列表对列表进行排序

在Java中,按多个其他列表对列表进行排序,java,sorting,Java,Sorting,我有多个相同大小的列表,需要按所有其他列表对其中一个进行排序。可以传入的列表数量没有限制,它们的顺序也很重要。此外,用户可能希望对列表进行升序或降序排序。例如,有人可能希望先按年龄降序排列人员列表,如果他们的年龄相同,则按名字升序排列 List people = List.of("John Doe", "Jane Doe", "Abe Smith") List ages = List.of(20, 25, 20) List firstNames = List.of("John", "Jane",

我有多个相同大小的列表,需要按所有其他列表对其中一个进行排序。可以传入的列表数量没有限制,它们的顺序也很重要。此外,用户可能希望对列表进行升序或降序排序。例如,有人可能希望先按年龄降序排列人员列表,如果他们的年龄相同,则按名字升序排列

List people = List.of("John Doe", "Jane Doe", "Abe Smith")
List ages = List.of(20, 25, 20)
List firstNames = List.of("John", "Jane", "Abe")

sort(people, ages, "desc", firstNames, "asc")

Result: ["Jane Doe", "Abe Smith", "John Doe"]
编辑:用户可以按他们想要的任何其他列表对他们想要的任何列表进行排序,只要它们大小相同。不仅仅是人。这只是他们可能想要排序的数据类型的一个例子。

  • 创建通用函数f(人员、列表1、描述、列表2、asc…)
  • 将hashMap对象和存储、人员作为键和值list1、list2,创建MyComperator类并按值排序

在我看来,您所采取的方法不会帮助您转换为类,并像Michael所提到的那样,将所有属性都转换为类

您确定这是Java吗?在我看来,它更像Python。这看起来很混乱。我将构造一个具有属性
age
firstName
的类
Person
,然后使用链式
比较器
。然而,@azurefrog是对的,它看起来像Python。如果您能够做出某些假设(列表的大小相同;列表包含可比较的元素等),这当然是可能的。你试图解决这个问题了吗?是的,我可以很容易地解决这个问题,将一个列表按另一个列表排序,但它不能真正扩展到多个列表。我一直在考虑@Michael和链接多个比较器,但我希望有一个更简单的解决方案或库可能会有所帮助。也许有,但我不知道有一个更简单的解决方案。这很容易实现。我最后做了一些非常类似的事情,但正如问题所提到的,我还需要每个列表的特定排序方向。我把它们储存在一个单独的列表中。然后,我通过一次比较两个项目对所有项目进行排序,在排序列表中循环每个项目。如果项目相同,则继续向下搜索列表,否则返回比较结果(如果排序按该索引递减,则乘以-1)