按对象字段之一对对象列表进行排序

sort List of Object by one of Object's field

我知道 Collections.sort(list) 可以处理字符串列表,但是对象列表呢?假设我有这个对象 Contact:

public class Contact implements Serializable {

    private SerializableBitmap picture;
    private String name;
    private String location;

    public Contact() {

    }

    public void setPicture(SerializableBitmap picture) {
        this.picture = picture;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public SerializableBitmap getPicture() {
        return picture;
    }

    public String getName() {
        return name;
    }

    public String getLocation() {
        return location;
    }
}

然后我有一个这个对象的ArrayList。是否可以根据联系人姓名对列表进行排序?我正在尝试用 ListView 填充它,但它应该按升序排列。

如果您正在填充一个列表,您应该只用一个字符串[]填充它,然后按姓名查找联系人以取回联系人对象。然后您可以对列表视图的字符串 [] 进行排序。

如评论中所示,您无论如何都需要创建一个新的对象字符串数组。这完全取决于您想要采用哪种方式。

您需要像下面这样实现自定义比较器

public class ContactComparator implements Comparator<Contact> {
    public int compare(Contact contact1, Contact contact2) {
        //In the following line you set the criterion, 
        //which is the name of Contact in my example scenario
        return contact1.getName().compareTo(contact2.getName());
    }
}

那么您只需像这样调用它(在您的代码中需要对联系人进行排序的任何地方):

Collections.sort(myContacts, new ContactComparator());

myContacts 是您需要排序的联系人对象列表(您在问题中将其命名为列表)。