グルーヴィー学びます:
私は、値が文字列データ型としてIまし日付で、値以下でハッシュマップを抱えています。私は、マップで利用できるすべての日付を比較して、非常に最近の日付を持っているだけで1つのキー値を抽出したいと思います。
私は値がないキーと比較したいと思います。
私は以下のコードを含めました
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("1", "1999-01-01");
map.put("2", "2013-10-11");
map.put("3", "2011-02-20");
map.put("4", "2014-09-09");
map.forEach((k, v) -> System.out.println("Key : " + k + " Value : " + v));
}
}
この1のための予想される出力は次のようになります。
キー4値2014年9月9日
WJS:
他の人に比べて、これは最新(別名最大)日付を提供する必要があります。
String max = map.values().stream().reduce("0000-00-00",
(a, b) -> b.compareTo(a) >= 0 ? b
: a);
あなたも、キーをしたい場合は、この操作を行うとのMap.Entryを返します。Javaが必要です9+
Entry<String, String> ent =
map.entrySet().stream().reduce(Map.entry("0", "0000-00-00"),
(a, b) -> b.getValue().compareTo(a.getValue()) >= 0 ? b
: a);
System.out.println(ent.getKey() + " -> " ent.getValue());
これはあなたのマップが空である前提としています。それが空の場合、それはNULLを返します。ジャワで動作します8+
Entry<String, String> ent = map.entrySet().stream().reduce(
(a, b) -> b.getValue().compareTo(a.getValue()) >= 0 ? b
: a).orElseGet(() -> null);