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()方法没有像我想的那样(只是创建一个作者列表)