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中不同的数组排序方法_Java_Sorting_Linked List - Fatal编程技术网

Java中不同的数组排序方法

Java中不同的数组排序方法,java,sorting,linked-list,Java,Sorting,Linked List,我有一个映射字符串,LinkedList mp。这对应于这样一个表: Name Date Dept Tony 4/1/2014 55125 Bob 3/2/2013 54112 Jill 7/2/2014 55265 Collections.sort(dataMap.get("Date"), (date1, date2) -> compareDates(date1, date2)); 我只是为这个例子编的。第一行的名称、日期、部门是标题,对应于地图中的

我有一个映射字符串,LinkedList mp。这对应于这样一个表:

Name   Date      Dept
Tony   4/1/2014  55125
Bob    3/2/2013  54112
Jill   7/2/2014  55265
Collections.sort(dataMap.get("Date"), (date1, date2) -> compareDates(date1, date2));
我只是为这个例子编的。第一行的名称、日期、部门是标题,对应于地图中的键值,因此您可以使用mp.getName作为示例。返回的名称为、日期为、部门为等的链表

我需要得到一个值的列表,然后对它进行排序。至于姓名和部门,我相信我可以做一个Collections.sort,但这对date不起作用。若日期是yyyymmdd,它将工作,但日期是mm/dd/yyyy,不能保证正确排序,通常不会。我想我可以处理每个条目并将其更改为yyyymmdd,但有些字段将是空的,或者可能是空的,但我认为是空的


我可以很容易地确定什么时候正常排序,什么时候按日期排序。只是不知道如何使用Collections.sort或其他方法对日期列表进行排序。有人能帮忙吗?

Collections.Sort方法允许您选择指定自己的比较器。在您的情况下,在对日期列进行排序时,您需要提供自己的比较器

如果您使用的是Java 8,那么代码将如下所示:

Name   Date      Dept
Tony   4/1/2014  55125
Bob    3/2/2013  54112
Jill   7/2/2014  55265
Collections.sort(dataMap.get("Date"), (date1, date2) -> compareDates(date1, date2));

然后,compareDates方法需要能够处理空值,并且需要分离日期组件并返回从date1到date2的天数。您可以很容易地使用java.util.Date对象来实现这一点-只需使用DataFormat转换日期,然后进行比较。

查找比较器示例?嘿,我尝试编辑,它说Dave Newton做了。不管怎样,是的,我需要这样的东西。也许在网上搜索一下?外面有很多信息。@user3257891那么你还在等什么?开始使用比较器,使用instanceof检查元素的类型,然后将所有元素移动到单个格式(可能是String或int)并进行比较。我不明白为什么日期不起作用。将字符串转换为日期,然后java.util.Date列表上的Collections.sort将起作用