comparater使って日付を比較することがありまして、下記のように書いたらうまくいきませんでした。
private int sortValue(Object obj1, Object obj2,String key){
if(((Map)obj1).get(key).getClass() == Integer.class){
Integer v1 = (Integer)((Map)obj1).get(key);
Integer v2 = (Integer)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
else if(((Map)obj1).get(key).getClass() == Date.class){
Date v1 = (Date)((Map)obj1).get(key);
Date v2 = (Date)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
なぜうまくいかなかったのかとゆうとDate.classを使っているがDBの型がtimestampだった為でした。
timestampだと形式上Dateと同じだったので一見わからなかった。
今回は下記のようにsortValue2を作りDateのみ渡すメソッドを作成し回避しました。
private int sortValue2(Object obj1, Object obj2,String key){
if(((Map)obj1).get(key).getClass() == Date.class){
Date v1 = (Date)((Map)obj1).get(key);
Date v2 = (Date)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
}
private int sortValue(Object obj1, Object obj2,String key){
if(((Map)obj1).get(key).getClass() == Integer.class){
Integer v1 = (Integer)((Map)obj1).get(key);
Integer v2 = (Integer)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
else if(((Map)obj1).get(key).getClass() == Date.class){
Date v1 = (Date)((Map)obj1).get(key);
Date v2 = (Date)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
なぜうまくいかなかったのかとゆうとDate.classを使っているがDBの型がtimestampだった為でした。
timestampだと形式上Dateと同じだったので一見わからなかった。
今回は下記のようにsortValue2を作りDateのみ渡すメソッドを作成し回避しました。
private int sortValue2(Object obj1, Object obj2,String key){
if(((Map)obj1).get(key).getClass() == Date.class){
Date v1 = (Date)((Map)obj1).get(key);
Date v2 = (Date)((Map)obj2).get(key);
if(updown == 0)
return v2.compareTo(v1);
else
return v1.compareTo(v2);
}
}
みんな知りたがってます。