Java 使用比较器对具有多个字段的对象映射进行排序
我有一个Java 使用比较器对具有多个字段的对象映射进行排序,java,sorting,collections,comparator,Java,Sorting,Collections,Comparator,我有一个作者对象,其中包含姓名,年龄,以及索引字段。作者存储在HashMap中(键是索引) 我想能够排序的名称和年龄 这是我想在我的Author类中使用的方法的开始,但显然我不理解这一点: public static LinkedHashMap<String, Author> sortName(Map<String, Author> unSortedMap){ Collection<Author> list = unSortedMap.values(
作者
对象,其中包含姓名
,年龄
,以及索引
字段。作者存储在HashMap中(键是索引)
我想能够排序的名称和年龄
这是我想在我的Author类中使用的方法的开始,但显然我不理解这一点:
public static LinkedHashMap<String, Author> sortName(Map<String, Author> unSortedMap){
Collection<Author> list = unSortedMap.values();
Collections.sort(list, new Comparator<Author>() {
public int compare(Author a, Author b) {
return a.name.compareTo(b.name);
}
});
}
公共静态LinkedHashMap sortName(映射未排序映射){
集合列表=unSortedMap.values();
Collections.sort(list,newcomparator(){
公共整数比较(作者a、作者b){
返回a.name.compareTo(b.name);
}
});
}
它不会编译,因为:(来自Eclipse)
方法排序(List,Comparator我不会编译,因为Collections.sort()
只对列表进行排序,而不是集合进行排序
如果要对值进行排序,可以通过将集合传递给列表的构造函数将集合转换为列表:
List<Author> list = new ArrayList<Author>(unSortedMap.values());
Collections.sort(list, new Comparator<Author>() {
public int compare(Author a, Author b) {
return a.name.compareTo(b.name);
}
});
我不会编译,因为Collections.sort()
只排序列表
,而不是集合
如果要对值进行排序,可以通过将集合传递给列表的构造函数将集合转换为列表:
List<Author> list = new ArrayList<Author>(unSortedMap.values());
Collections.sort(list, new Comparator<Author>() {
public int compare(Author a, Author b) {
return a.name.compareTo(b.name);
}
});
我不会编译,因为Collections.sort()
只排序列表
,而不是集合
如果要对值进行排序,可以通过将集合传递给列表的构造函数将集合转换为列表:
List<Author> list = new ArrayList<Author>(unSortedMap.values());
Collections.sort(list, new Comparator<Author>() {
public int compare(Author a, Author b) {
return a.name.compareTo(b.name);
}
});
我不会编译,因为Collections.sort()
只排序列表
,而不是集合
如果要对值进行排序,可以通过将集合传递给列表的构造函数将集合转换为列表:
List<Author> list = new ArrayList<Author>(unSortedMap.values());
Collections.sort(list, new Comparator<Author>() {
public int compare(Author a, Author b) {
return a.name.compareTo(b.name);
}
});
谢谢。那么Entry对象就是键和值?如果排序只传递一个作者列表,为什么比较需要这个条目呢?除非.values()方法没有像我想的那样(只是创建一个作者列表)谢谢。那么Entry对象就是键和值?如果排序只传递一个作者列表,为什么比较需要这个条目呢?除非.values()方法没有像我想的那样(只是创建一个作者列表)谢谢。那么Entry对象就是键和值?如果排序只传递一个作者列表,为什么比较需要这个条目呢?除非.values()方法没有像我想的那样(只是创建一个作者列表)谢谢。那么Entry对象就是键和值?如果排序只传递一个作者列表,为什么比较需要这个条目呢?除非.values()方法没有像我想的那样(只是创建一个作者列表)