Java “如何排序”;ArrayList<;HashMap<;字符串,字符串>&燃气轮机;arrList";按字母顺序?
您能指导我如何按字母顺序对具有哈希映射的数组列表进行排序吗Java “如何排序”;ArrayList<;HashMap<;字符串,字符串>&燃气轮机;arrList";按字母顺序?,java,android,arrays,sorting,Java,Android,Arrays,Sorting,您能指导我如何按字母顺序对具有哈希映射的数组列表进行排序吗 JSONArray jArr2 = new JSONArray(jsonString2); for(int i=0;i<jArr2.length();i++){ HashMap<String, String> map = new HashMap<String, String>(); map.put("titleName",jArr2.getJSONObject(i).getString("title
JSONArray jArr2 = new JSONArray(jsonString2);
for(int i=0;i<jArr2.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("titleName",jArr2.getJSONObject(i).getString("titleName"))
programList.add(map);
}
JSONArray jArr2=新的JSONArray(jsonString2);
对于(int i=0;i实现一个比较器
,它只提取与value键关联的值,然后使用Collections.sort方法对arraylist进行排序
例如:
class MyComparator implements Comparator<Map<String, String>>{
private final String key;
public MyComparator(String key)
{
this.key = key;
}
public int compare(Map<String, String> first,
Map<String, String> second)
{
// TODO: Null checking, both for maps and values
String firstValue = first.get(key);
String secondValue = second.get(key);
return firstValue.compareTo(secondValue);
}
}
类MyComparator实现比较器{
私有最终字符串密钥;
公共MyComperator(字符串键)
{
this.key=key;
}
公共整数比较(映射优先,
地图(秒)
{
//TODO:对映射和值进行空检查
字符串firstValue=first.get(键);
字符串secondValue=second.get(键);
返回firstValue.compareTo(secondValue);
}
}
实现一个比较器
,它只提取与值键关联的值,然后使用Collections.sort方法对arraylist进行排序
例如:
class MyComparator implements Comparator<Map<String, String>>{
private final String key;
public MyComparator(String key)
{
this.key = key;
}
public int compare(Map<String, String> first,
Map<String, String> second)
{
// TODO: Null checking, both for maps and values
String firstValue = first.get(key);
String secondValue = second.get(key);
return firstValue.compareTo(secondValue);
}
}
类MyComparator实现比较器{
私有最终字符串密钥;
公共MyComperator(字符串键)
{
this.key=key;
}
公共整数比较(映射优先,
地图(秒)
{
//TODO:对映射和值进行空检查
字符串firstValue=first.get(键);
字符串secondValue=second.get(键);
返回firstValue.compareTo(secondValue);
}
}
是的,您可以将Collections.sort()与自定义比较器一起使用
这应该是你必须上的课
class YourCustomComparator implements Comparator<HashMap<String, String>> {
@Override
public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs) {
// check here your objects. lhs and rhs. compare them as you want
// return 1 if lhs is greater than rhs
// return 0 if ther are same
// return -1 otherwise
}
}
类YourCustomComparator实现Comparator{
@凌驾
公共整数比较(哈希映射lhs、哈希映射rhs){
//在这里检查您的对象。lhs和rhs。根据需要进行比较
//如果lhs大于rhs,则返回1
//如果它们相同,则返回0
//否则返回-1
}
}
是的,您可以将Collections.sort()与自定义比较器一起使用
这应该是你必须上的课
class YourCustomComparator implements Comparator<HashMap<String, String>> {
@Override
public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs) {
// check here your objects. lhs and rhs. compare them as you want
// return 1 if lhs is greater than rhs
// return 0 if ther are same
// return -1 otherwise
}
}
类YourCustomComparator实现Comparator{
@凌驾
公共整数比较(哈希映射lhs、哈希映射rhs){
//在这里检查您的对象。lhs和rhs。根据需要进行比较
//如果lhs大于rhs,则返回1
//如果它们相同,则返回0
//否则返回-1
}
}
看看你的例子,我认为你根本不需要地图。你拥有的是一个地图列表,其中每个地图只有一个键,即“标题名”。为什么不只拥有一个标题名列表?那么你的代码如下所示:
JSONArray jArr2 = new JSONArray(jsonString2);
List<String> titleNames = new ArrayList<>();
for (int i = 0; i < jArr2.length(); i++) {
titleNames.add(jArr2.getJSONObject(i).getString("titleName"))
}
请注意,这将起作用,而地图列表上建议Collections.sort()的其他答案将不起作用。这是因为titlenames是一个字符串列表,它实现了Compariable(即sort()方法知道如何对它们进行相互排序),而Map不实现Compariable(因为有多种方法可以对映射进行排序—条目数、字节总数等)。看看您的示例,我认为您根本不需要映射。您拥有的是一个映射列表,其中每个映射只有一个键,即“titleName”。为什么不只拥有一个titleName列表?那么您的代码如下所示:
JSONArray jArr2 = new JSONArray(jsonString2);
List<String> titleNames = new ArrayList<>();
for (int i = 0; i < jArr2.length(); i++) {
titleNames.add(jArr2.getJSONObject(i).getString("titleName"))
}
请注意,这将起作用,而地图列表上建议Collections.sort()的其他答案将不起作用。这是因为titlenames是一个字符串列表,它实现了Compariable(即sort()方法知道如何对它们进行相互排序),而Map不实现Compariable(因为有多种方法可以对映射进行排序—条目数、总字节数等)。尝试使用java中的COllections.Sort()?使用带有适当比较器的树映射?对映射列表进行排序意味着什么?您是否只对一个键(“titleName”)感兴趣?Collections.Sort无法直接解决此问题,因为它比较的是对象而不是值。请进一步澄清您的要求。您的ArrayList包含HashMap。您正在谈论按字母顺序排序HashMap?或者什么?尝试使用Collections.Sort()在java中?使用带有适当比较器的树映射?对映射列表进行排序意味着什么?您是否只对单个键(“titleName”)感兴趣?Collections.Sort不会直接解决此问题,因为它比较的是对象而不是值。请进一步澄清您的要求。您的ArrayList包含HashMap。您正在谈论按字母顺序排序HashMap?或者什么?如果这有助于您解决问题,请接受答案。请参阅接受答案的工作原理:Do accept thee如果这有助于您解决问题,请回答。请参阅接受答案的工作原理: