【发布时间】:2015-03-08 01:01:24
【问题描述】:
有很多与此相关的问题建议使用Comparator 来比较和排序数据,我已经在尝试并努力使其工作,所以请不要将其报告为重复。
我有一个HashMap<String, String> 的数组列表
ArrayList<HashMap<String, String>>
并以这种形式在此列表中包含数据,
title、link 和 number 是键。
{ {title="",link="",number=}, {title="",link="",number=}, {title="",link="",number=} }
例子,
{ {title,link,number = 8}, {title,link,number = 1}, {title,link,number = 3} }
应该改为,
{ {title,link,number = 1}, {title,link,number = 3}, {title,link,number = 8} }
我想根据数字对其进行排序,我已经尝试过了,
我创建了一个实现 Comparator 的新类(正如许多帖子中建议的那样创建新类来比较数据)。
public class SortData implements Comparator<ArrayList<HashMap<String, String>>>
自动实现的方法是,
@Override
public int compare(ArrayList<HashMap<String, String>> lhs,
ArrayList<HashMap<String, String>> rhs) {
return 0;
}
现在这个方法建议使用Hashmap的两个arraylist来比较,但是由于我只有一个arraylist需要排序,那么第二个arraylist应该用什么?
我的 Arraylist 名称是 SecondArray,我想将它的每个值与下一个值进行比较,
@Override
public int compare(ArrayList<HashMap<String, String>> lhs,
ArrayList<HashMap<String, String>> rhs) {
lhs = SecondArray;
rhs = // How to compare to the next value of the same Array ?
return 0;
}
我应该如何将同一个数组列表与下一个值进行比较?
更新: 每个数组列表元素都有三个键/值对,其中一个是数字,我想根据该数字对数组列表进行排序,这意味着数字最小的键/值对应该在数组中排在第一位列表。
【问题讨论】:
-
HashMap 怎么会有
{ {title,link,number}, {title,link,number}, {title,link,number} }的数据?地图是键=值... -
您到底想要排序什么?你到底想通过排序来完成什么?这听起来像x y problem
-
您想对 ArrayLists 的 hashmap 进行排序,还是对 ArrayList 中的 hashmap 进行排序?因为您要做的是将一个数组列表与一个数组列表相匹配,这意味着您要对哈希图的数组列表的数组列表进行排序......似乎过于复杂。 O_o
-
机会,每个数组列表元素都有三个键/值对,其中一个是数字,我想根据该数字对数组列表进行排序,这意味着键/值对具有最低number 应该在数组列表中排在第一位
-
@joe 如果每个都有 3 个键值对 对,那么听起来您应该为这 3 个变量使用数据保存类而不是 不是映射
标签: java android sorting arraylist