0

次のハッシュマップがあります

{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

提案された方法で大丈夫です。

ありがとう

4

5 に答える 5

1
  1. Don't store dates as strings in the first place, store them as dates.
  2. You can then use a TreeMap which will automatically sort the dates (keys) for you.
  3. if all your keys are equal to the corresponding values, you can also use a TreeSet
于 2012-08-24T10:05:43.283 に答える
1

HashMaps は順序を保持しないことを付け加えておきます。HashMaps はキーのハッシュ コードを使用してエントリを配列に配置するため、任意の種類の並べ替えアルゴリズムで使用することはできません。代わりに使用する必要があります。 TreeMap またはその他のソート可能マップの実装

于 2012-08-24T10:26:57.943 に答える
1

誰もが言ったようDateに、ソートされたセットでオブジェクトを使用すると、これがはるかに簡単になります。を使用して文字列から日付に変換します

new SimpleDateFormat("dd/MM/yyyy").parse(input);
于 2012-08-24T10:12:16.320 に答える
1

カスタム コンパレータを実装し、それらを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);

ただし、文字列ではなくマップに日付を保存する必要があります。これを変更できない場合は、上記の方法を使用してください。

于 2012-08-24T10:05:00.840 に答える
1

可能であれば、日付を yyyy/MM/dd (例: 2012/02/16) として保存し、SortedSetを使用してください。

于 2012-08-24T10:05:31.393 に答える