次のハッシュマップがあります
{20/02/2012=20/02/2012, 16/02/2012=16/02/2012}
しかし、これは文字列(キーと値)として存在します。
月と日に基づいて並べ替える方法を教えてください。
ex : 16/02/2012=16/02/2012,20/02/2012=20/02/2012
提案された方法で大丈夫です。
ありがとう
HashMaps は順序を保持しないことを付け加えておきます。HashMaps はキーのハッシュ コードを使用してエントリを配列に配置するため、任意の種類の並べ替えアルゴリズムで使用することはできません。代わりに使用する必要があります。 TreeMap またはその他のソート可能マップの実装
誰もが言ったようDate
に、ソートされたセットでオブジェクトを使用すると、これがはるかに簡単になります。を使用して文字列から日付に変換します
new SimpleDateFormat("dd/MM/yyyy").parse(input);
カスタム コンパレータを実装し、それらをTreeMapに格納する必要があります。
例(joda-timeを使用):
class MyComparator implements Comparator<String> {
@Override
public int compare(String value1, String value2) {
LocalDate date1 = LocalDate.parse(value1, DateTimeFormat.forPattern("dd/MM/yyyy"));
LocalDate date2 = LocalDate.parse(value2, DateTimeFormat.forPattern("dd/MM/yyyy"));
return date1.compareTo(date2);
}
}
TreeMap<String, String> treeMap = new TreeMap<String,String>();
treeMap.put("20/02/2012", "20/02/2012");
treeMap.put("16/02/2012","16/02/2012");
System.out.println(treeMap);
ただし、文字列ではなくマップに日付を保存する必要があります。これを変更できない場合は、上記の方法を使用してください。
可能であれば、日付を yyyy/MM/dd (例: 2012/02/16) として保存し、SortedSetを使用してください。