#android #sorting #collections
#Android #сортировка #Коллекции
Вопрос:
Я хочу отсортировать SortedSet<Date>
в порядке убывания.
Я пробовал с Collection
сортировкой и другими параметрами, но ни один из них не работает.
Я много гуглил, но не нашел никакого решения. Мой код выглядит следующим образом:
HashMap<Date, ArrayList<HashMap<String, String>>> tlData = new HashMap<Date, ArrayList<HashMap<String, String>>>();
SortedSet<Date> keys;
public void processData(String result) {
Calendar cal = Calendar.getInstance();
try {
JSONArray arr = new JSONArray(result);
int len = arr.length();
ArrayList<HashMap<String, String>> tmpList;
HashMap<String, String> map;
tlData = new HashMap<Date, ArrayList<HashMap<String, String>>>();
for (int i = 0; i < len; i) {
JSONObject obj = arr.getJSONObject(i);
String dateStr = obj.getString("timestamp");
Date d = df.parse(dateStr);
cal.setTime(d);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DATE), 0, 0, 0);
d = cal.getTime();
tmpList = tlData.get(d);
if (tmpList == null)
tmpList = new ArrayList<HashMap<String, String>>();
map = new HashMap<String, String>();
String val = StringEscapeUtils.unescapeXml(StringEscapeUtils
.unescapeHtml(obj.getString("ti")));
map.put("val", val);
map.put("id", obj.getString("id"));
tmpList.add(map);
tlData.put(d, tmpList);
}
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
keys = new TreeSet<Date>(tlData.keySet()); // I want to sort this set to descending order.
}
Ответ №1:
Создайте экземпляр TreeSet
с обратным компаратором и всеми элементами:
private static final Comparator<Date> REV_DATE_COMP = new Comparator<Date>() {
@Override
public int compare(Date d1, Date d2) {
return d2.compareTo(d1);
}
}
// ...
keys = new TreeSet<Date>(REV_DATE_COMP); // init with reverse comparator
keys.addAll(tlData.keySet());
Комментарии:
1. Спасибо.. Все работает нормально