按日期时间对 LinkedHashset 进行排序
sorting a LinkedHashset by date time
我有以下 LinkedHashset
它与 LinkedHashset 一样,因为我在添加时有很多重复的条目,它可以防止这种情况。
然后我如何对我的 LinkedHashset 进行排序
LinkedHashSet<String> uniqueStrings = new LinkedHashSet<>();
uniqueStrings.add("03/03/2016 00:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 01:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 00:01:00");
List<String> asList = new ArrayList<>(uniqueStrings);
System.out.println((asList+ "\n"));
使用带有将文本解析为日期的比较器的 TreeSet。
private static Date safeParse(DateFormat dateFormat, String str) {
try {
return dateFormat.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
DateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Comparator<String> comparator = (a, b) -> safeParse(format, a).compareTo(safeParse(format, b));
Set<String> uniqueStrings = new TreeSet<>(comparator);
uniqueStrings.add("03/03/2016 00:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 01:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 00:01:00");
uniqueStrings.stream().forEach(System.out::println);
}
我有以下 LinkedHashset
它与 LinkedHashset 一样,因为我在添加时有很多重复的条目,它可以防止这种情况。
然后我如何对我的 LinkedHashset 进行排序
LinkedHashSet<String> uniqueStrings = new LinkedHashSet<>();
uniqueStrings.add("03/03/2016 00:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 01:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 00:01:00");
List<String> asList = new ArrayList<>(uniqueStrings);
System.out.println((asList+ "\n"));
使用带有将文本解析为日期的比较器的 TreeSet。
private static Date safeParse(DateFormat dateFormat, String str) {
try {
return dateFormat.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
DateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Comparator<String> comparator = (a, b) -> safeParse(format, a).compareTo(safeParse(format, b));
Set<String> uniqueStrings = new TreeSet<>(comparator);
uniqueStrings.add("03/03/2016 00:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 01:00:00");
uniqueStrings.add("03/03/2016 00:30:00");
uniqueStrings.add("03/03/2016 00:01:00");
uniqueStrings.stream().forEach(System.out::println);
}