日付値ペアのコレクションを並べ替えたい。私のキーは日付で、値は文字列です。そこで、TreeMap を選択しました。
今、
次のイテレータは、TreeMaps キーと同様にソートされます。いくつかのループを試しましたが、まだ疑問があります
Iterator<Date> iter = policyMap.keySet().iterator();
イテレータのインデックスをインクリメントせずに次のキーを取得する方法はありますか?
policyMap.higherKey(cpDate))
Java 6の前にこれと同等の方法はありますか.
最後に、私もフォローしようとした自分を恥じました。
TreeMap<Date, String> policySubMap =
new TreeMap<Date, String>policyMap.tailMap(cpDate));
policySubMap.remove(policySubMap.firstKey());
System.out.println(" | amount > " + policySubMap.firstKey());
これは私の完全なコードです:
public void controller(){
TreeMap<Date, String> policyMap = new TreeMap<Date, String>();
Calendar cal = Calendar.getInstance();
policyMap.put(addDate(cal, 2).getTime(), "Amount is 10");
policyMap.put(addDate(cal, 10).getTime(), "Amount is 10");
policyMap.put(addDate(cal, -10).getTime(), "Amount is -10");
policyMap.put(addDate(cal, 11).getTime(), "Amount is 11");
policyMap.put(addDate(cal, -11).getTime(), "Amount is -11");
policyMap.put(addDate(cal, -12).getTime(), "Amount is -12");
Iterator<Date> iter = policyMap.keySet().iterator();
while (iter.hasNext()) {
Date cpDate = iter.next();
System.out.print("From "+cpDate + " to " + policyMap.get(cpDate));
// if(iter.hasNext())System.out.println(" | amount > " + policyMap.higherKey(cpDate)); // This is not supporting in before java 6
if(iter.hasNext()){
TreeMap<Date, String> policySubMap = new TreeMap<Date, String>(policyMap.tailMap(cpDate));
policySubMap.remove(policySubMap.firstKey());
System.out.println(" | amount > " + policySubMap.firstKey());
}
else System.out.println("Checking date");
}
}
public Calendar addDate(Calendar cal, int amount) {
cal.add(Calendar.DATE, amount);
return cal;
}