问题
i have sorted the data on the basis of name. but when i am going to sort the data of arraylist of hash map on the basis of "date", i have no idea how to solve it. my Method for sort by name is given below.
protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {
Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
public int compare(HashMap<String, String> mapping1,
HashMap<String, String> mapping2) {
return mapping1.get(KEY_NAME).compareTo(mapping2.get(KEY_NAME));
}
});
return menuItems2;
}
i have receive the data from xml parsing. where we get name, date ,time and etc in string format.
回答1:
convert string to date and then compare it
protected ArrayList<HashMap<String, String>>
setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {
Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");//do determ
@Override
public int compare(HashMap<String, String> mapping1,
HashMap<String, String> mapping2) {
try {
return f.parse(mapping1.get(KEY_NAME)).compareTo(f.parse(mapping2.get(KEY_NAME)));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
return menuItem2;
}
回答2:
Here example for sort HashMap based on string date
protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {
Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
public int compare(HashMap<String, String> mapping1,
HashMap<String, String> mapping2) {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
Date date1 = formatter.parse(mapping1.get(DATE));
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
Date date2 = formatter.parse(mapping2.get(DATE));
if(date1.after(date2)){
return mapping1.get(DATE);
}else{
return mapping2.get(DATE);
}
}
});
return menuItems2;
}
来源:https://stackoverflow.com/questions/22812349/how-to-sort-data-of-arraylist-of-hashmapstring-string-on-the-basis-of-date