有很多与此相关的问题建议使用 Comparator
比较和排序数据,我已经在尝试并努力使其工作,所以请不要将其报告为重复。
我有一个数组列表 HashMap<String, String>
ArrayList<HashMap<String, String>>
并以这种形式在此列表中包含数据,
title
, link
和number
是 key 。
{ {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} }
我想根据数字对其进行排序,我已经尝试过,
我创建了一个实现比较器的新类(正如许多帖子中建议的那样创建新类来比较数据)。
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;
}
我应该如何将相同的数组列表与下一个值进行比较?
更新: 每个数组列表元素都有三个键/值对,其中一个是数字,我想根据该数字对数组列表进行排序,这意味着数字最小的键/值对应该在数组中第一个列表。
最佳答案
将工具更改为Comparator<Hashmap<String,String>>
并使用:
public int compare(HashMap<String, String>> lhs,
HashMap<String, String>> rhs) {
return Integer.compare(Integer.parseInt(lhs.get("number")),
Integer.parseInt(rhs.get("number")));
}
我假设您指的是(哈希)映射列表。
关于java - ArrayList 或 HashMap<String, String> 的不同排序方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865113/