java - 比较两个数组列表以返回最新日期

标签 java date arraylist hashmap date-comparison

我有两个数组列表,如下所示。

ArrayList<String> keys = new ArrayList<>();
ArrayList<String> values = new ArrayList<>();
keys.add("1","1","1","2","2","3");
values.add("2016-06-22 07:18:45", "2016-06-22 08:18:45", "2016-06-22 09:18:45",
"2016-06-22 03:18:45","2016-06-22 04:18:45","2016-06-22 01:18:45");

现在我需要这个功能

HashMaplatestValues(键、值); 输出应如下所示,

["1"=>"2016-06-22 09:18:45","2"=>"2016-06-22 04:18:45", "3"=>"2016-06-22 01:18:45"]

返回该特定键的最新日期单个值。任何人都可以建议如何实现这一目标。

谢谢并提前!

最佳答案

我想这样就可以了。

public static void main(String[] args) {
    ArrayList<String> keys = new ArrayList<>(Arrays.asList("1", "1", "1", "2", "2", "3"));
    ArrayList<String> values = new ArrayList<>(Arrays.asList("2016-06-22 07:18:45", "2016-06-22 08:18:45", "2016-06-22 09:18:45",
            "2016-06-22 03:18:45", "2016-06-22 04:18:45", "2016-06-22 01:18:45"));
    HashMap<String, String> map = new HashMap<String, String>();

    for (int i = 0; keys.size() == values.size() && i < keys.size(); i++) {
        String key = keys.get(i);
        String value = values.get(i);
        if (!map.containsKey(key) || dateAsNo(value) > dateAsNo(map.get(key))) {
            map.put(key, value);
        }
    }
    System.out.println(map);
}

public static long dateAsNo(String v) {
    return Long.parseLong(v.replaceAll("\\D", ""));
}

仅当所有日期都具有相同格式时才有效 yyyy-MM-dd hh:mm:ss

关于java - 比较两个数组列表以返回最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37962971/

相关文章:

java - Eclipse 中 ECLemma 代码覆盖工具的奇怪行为

java - 间接绘制AWT/Swing组件?

java - 使用 PostgreSQL 的 JPA 继承

java.lang.IllegalArgumentException : Comparison method violates its general contract[dup] 异常

java - 将字符串数组添加到字符串数组的数组列表中

c# - 获取 ArrayList 中对象的属性值

java - macOS Mojave (10.14) 到 Lion (10.7) 上的 JAVA_HOME 在哪里?

Jquery 日期选择器格式问题

r - 在 R 中分割日期

java - 如何编写自定义标签来读取和打印数组列表?