Android 排序HasMap列表

Android 排序HasMap列表,android,listview,sorting,hashmap,Android,Listview,Sorting,Hashmap,我用谷歌搜索过,并尝试过一些例子,但我总是被卡住 这是我尝试使用集合时的错误消息。排序: 集合类型的泛型方法排序(列表)不适用于参数(ArrayList)。推断类型HashMap不是有界参数的有效替代品。发生此错误的原因是无法简单地比较HashMap的两个实例 当您在列表上调用sort方法时,Java将尝试将每个元素相互比较,并对集合排序。如果无法比较元素(没有比较两个HashMap的明显方法,标准是什么?),则会发生该错误 你真的需要对列表进行排序吗?如果有,根据哪些标准 实现这一点的唯一方法

我用谷歌搜索过,并尝试过一些例子,但我总是被卡住

这是我尝试使用
集合时的错误消息。排序


集合类型的泛型方法
排序(列表)
不适用于参数(
ArrayList
)。推断类型
HashMap
不是有界参数
的有效替代品。发生此错误的原因是无法简单地比较HashMap的两个实例

当您在列表上调用
sort
方法时,Java将尝试将每个元素相互比较,并对集合排序。如果无法比较元素(没有比较两个HashMap的明显方法,标准是什么?),则会发生该错误

你真的需要对列表进行排序吗?如果有,根据哪些标准


实现这一点的唯一方法是创建自己的HashMap实例,并将其用于比较HashMap实例,同时考虑到您的特定条件。

发生此错误是因为您无法简单地比较两个HashMap实例

当您在列表上调用
sort
方法时,Java将尝试将每个元素相互比较,并对集合排序。如果无法比较元素(没有比较两个HashMap的明显方法,标准是什么?),则会发生该错误

你真的需要对列表进行排序吗?如果有,根据哪些标准


实现这一点的唯一方法是创建自己的,并使用它来比较哈希映射实例,同时考虑到您的特定标准。

正如@pcalcao已经解释的那样,您需要决定如何对映射进行排序(基于什么标准),然后在自定义比较器中实现该排序顺序,并使用该比较器调用Collections.sort

例如,假设您想按姓名的字母顺序进行排序,您可以编写如下内容:

Collections.sort(mylist, new Comparator<Map<String, String>>() {

    @Override
    public int compare(Map<String, String> o1, Map<String, String> o2) {
        String name1 = o1.get("name");
        String name2 = o2.get("name");
        if (name1 == null) return -1;
        return name1.compareTo(name2);
    }
});
Collections.sort(mylist,newcomparator(){
@凌驾
公共整数比较(映射o1,映射o2){
字符串name1=o1.get(“name”);
字符串名称2=o2.get(“名称”);
if(name1==null)返回-1;
返回name1.compareTo(name2);
}
});

正如@pcalcao所解释的,您需要决定如何对映射进行排序(基于什么标准),然后在自定义比较器中实现该排序顺序,并使用该比较器调用Collections.sort

例如,假设您想按姓名的字母顺序进行排序,您可以编写如下内容:

Collections.sort(mylist, new Comparator<Map<String, String>>() {

    @Override
    public int compare(Map<String, String> o1, Map<String, String> o2) {
        String name1 = o1.get("name");
        String name2 = o2.get("name");
        if (name1 == null) return -1;
        return name1.compareTo(name2);
    }
});
Collections.sort(mylist,newcomparator(){
@凌驾
公共整数比较(映射o1,映射o2){
字符串name1=o1.get(“name”);
字符串名称2=o2.get(“名称”);
if(name1==null)返回-1;
返回name1.compareTo(name2);
}
});

您不会在调用集合的位置显示代码。排序(…)
…Hi assylias。谢谢你的回复。这是我的主要问题。我不知道该把它放在哪里。如果我必须更改ArrayList或不更改。因此,我放了一个干净的代码,而不是一个混乱的代码。您不会在调用
Collections.sort(…)
…Hi assylias的地方显示代码。谢谢你的回复。这是我的主要问题。我不知道该把它放在哪里。如果我必须更改ArrayList或不更改。因此,我写了一个干净的代码,而不是乱七八糟的代码。正确的感谢方式是接受答案;)我很高兴它有帮助。请告诉我一件事……所以我不需要改变任何东西,比如arraylist,或者类似的东西,只需要创建一个比较器,带有我想要排序的项,是吗?是的,您需要创建一个比较器类来比较两个HashMap,并使用它作为排序的参数。读了那篇关于比较器的小文章,你就会明白了(我现在就开始工作了。现在我知道我以前的尝试是什么了。我没有把“”放在比较器上。非常感谢你。现在我有了按项目日期排序的列表。这是一个开始,如果我愿意,可以为更多的项目排序。:)正确的感谢方式是接受答案;)我很高兴它有帮助。请告诉我一件事……所以我不需要改变任何东西,比如arraylist,或者类似的东西,只需要创建一个比较器,带有我想要排序的项,是吗?是的,您需要创建一个比较器类来比较两个HashMap,并使用它作为排序的参数。读了那篇关于比较器的小文章,你就会明白了(我现在就开始工作了。现在我知道我以前的尝试是什么了。我没有把“”放在比较器上。非常感谢你。现在我有了按项目日期排序的列表。这是一个开始,如果我愿意,可以为更多的项目排序。:)我现在开始工作了。现在我知道我以前的尝试是什么了。我没有把“”放在比较器上。非常感谢你。现在我有了按项目日期排序的列表。这是一个开始,如果我愿意,可以为更多的项目排序。:)我现在开始工作了。现在我知道我以前的尝试是什么了。我没有把“”放在比较器上。非常感谢你。现在我有了按项目日期排序的列表。这是一个开始,如果我愿意,可以为更多的项目排序。:)