我有6个数组列表,如下所示:
index: 0 1 2 3 4 5
[12345.12 |123.0 |12.12 |1234.0 |123.12 |123.12 ] <Double>
[2000-01-11 |2000-01-11 |2000-01-11 |2000-01-12 |2000-01-12 |2000-01-11] <String>
[1234 | 1234 | 1234 | 1235 | 1235 | 1234 ] <String>
[4 | 10 | 16 | 24 | 30 | 20 ] <Integer>
[7 | 13 | 19 | 27 | 34 | 25 ] <Integer>
[9 | 15 | 21 | 29 | 35 | 40 ] <Integer>
使用Java,我想按照第一个列表中的值降序排列.如果第一个列表中的值相等,则按照第二个列表中对应的值以自然顺序排列两个相等的值.调用Collection.sort(second_list)可以将第二个列表中的字符串以自然顺序排序。
- (例如:因为索引4和5处的元素相等,所以我必须按照第二个列表中索引4和5处的元素的自然顺序对它们进行排序:123.12 = 123.12但是“2000-01-12”〉“2000-01-11”,所以后两个指数的顺序将是5,4)*
排序后的列表应如下所示:
0 3 5 4 1 2
[12345.12 |1234.0 |123.12 |123.12 |123.0 |12.12 ] <Double>
[2000-01-11 |2000-01-12 |2000-01-11 |2000-01-12 |2000-01-11 |2000-01-11] <String>
[1234 | 1235 | 1234 | 1235 | 1234 | 1234 ] <String>
[4 | 24 | 20 | 30 | 10 | 16 ] <Integer>
[7 | 27 | 25 | 34 | 13 | 19 ] <Integer>
[9 | 29 | 40 | 35 | 15 | 21 ] <Integer>
我试过构建一个字符串的ArrayList,其中列表中的每个元素都包含一列中的元素,正如我们上面所看到的(例如:在上面的列中的每个元素之后,我用逗号“”连接字符串,以便我可以在排序后拆分字符串(例如:“12345.12,2000 -01- 11,...,9”。由于排序不像我预期的那样工作,我已经放弃了这个计划。
我需要一种表,允许重复值的行。
也许如果第一个List是Map,其中索引是键,值是上面ArrayList中的元素,我可以这样做:
- 我把
Map<Integer, Double>
的值按值排序,索引--是键,第一个列表中的元素--是值,所以我得到了索引的顺序:0 3 5 4 1 - 我按照这个自定义顺序对其他数组列表排序,但是如果
Map<Integer, Double>
中的值是重复的,我该怎么做?我该如何按照第二个列表中元素的自然顺序对它们排序?
...我需要一个结构,排序快速的名单提到。
2条答案
按热度按时间jtoj6r0c1#
使用您的值名称创建项目对象:
在其他类中使用以下命令:
thtygnil2#
这是一个粗略的排序实现,它使用几个独立的等长Comparable列表中的值来创建一个顺序,其中List表示排序键。
类CompInd实现n个列表的 * 索引 * 的比较器。
main方法(从数据中)创建三个List并调用sort。
这适用于任意数量的并行List,当然,前提是它们都是实现Comparable的对象的List。