Java 如何对hashmap的ArrayList的数据进行排序<;字符串,字符串>;根据日期
我已根据姓名对数据进行了排序。但是,当我要根据“日期”对哈希映射的arraylist的数据进行排序时,我不知道如何解决它。下面给出了我按名称排序的方法Java 如何对hashmap的ArrayList的数据进行排序<;字符串,字符串>;根据日期,java,sorting,arraylist,hashmap,Java,Sorting,Arraylist,Hashmap,我已根据姓名对数据进行了排序。但是,当我要根据“日期”对哈希映射的arraylist的数据进行排序时,我不知道如何解决它。下面给出了我按名称排序的方法 protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) { Collections.sort(menuItems2, new
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;
}
受保护的ArrayList setListOrderByName(ArrayList menuItems2){
Collections.sort(menuItems2,新的Comparator(){
公共整数比较(HashMap映射1,
HashMap映射(2){
返回mapping1.get(KEY_NAME).compareTo(mapping2.get(KEY_NAME));
}
});
返回菜单项2;
}
我已经收到了来自xml解析的数据。我们可以从中获取字符串格式的名称、日期、时间等 将字符串转换为日期,然后进行比较
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;
}
protectedarraylist
setListOrderByName(ArrayList菜单项S2){
Collections.sort(menuItems2,新的Comparator(){
DateFormat f=new SimpleDateFormat(“dd/MM/yyyy'@'hh:MM a”);//确定
@凌驾
公共整数比较(HashMap映射1,
HashMap映射(2){
试一试{
返回f.parse(mapping1.get(KEY_NAME)).compareTo(f.parse(mapping2.get(KEY_NAME)));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});
返回菜单项2;
}
这里是基于字符串日期的排序HashMap示例
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;
}
受保护的ArrayList setListOrderByName(ArrayList menuItems2){
Collections.sort(menuItems2,新的Comparator(){
公共整数比较(HashMap映射1,
HashMap映射(2){
DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”);
DateDate1=formatter.parse(mapping1.get(Date));
DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”);
DateDate2=formatter.parse(mapping2.get(Date));
如果(日期1.之后(日期2)){
返回mapping1.get(日期);
}否则{
返回mapping2.get(日期);
}
}
});
返回菜单项2;
}
那里没有“日期”。。。只是一个列表
的映射
。您的日期是字符串格式的吗?如果它是以字符串形式存储的日期,最简单的方法是将字符串转换为日期,然后进行比较。@AmitChotaliya或将其存储为yyyyMMdd,以便按词汇进行排序。下面介绍如何比较日期和解析日期,这是一种非常特定的日期格式。您是如何确定的?@ElliottFrisch要确定字符串格式,请访问