【问题标题】:sort List of Object by one of Object's field按对象的字段之一对对象列表进行排序
【发布时间】:2015-03-30 22:34:00
【问题描述】:

我知道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 填充它,但它应该按升序排列。

【问题讨论】:

标签: android list sorting object


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您需要实现一个自定义比较器,如下所示

    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 是您需要排序的联系人对象列表(您在问题中将其命名为列表)。

    【讨论】:

    • 如果你以这种方式调用它,这应该是一个静态方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多