Android-Collections.sort()

本文探讨如何在Android中使用Collections.sort()方法对包含多种属性的对象进行比较。介绍了两种方法:一是让对象实现Comparable接口,二是针对Java 1.7及以上版本,需要注意在比较方法中处理相等情况,防止抛出IllegalArgumentException。

将对象进行比较
但是对象中有多种属性
方法一:

public class FriendInfo implements Comparable<Student> {
    private String name;
    private String pinyin;
    private String firstLetter;

    public String getFirstLetter() {
        return firstLetter;
    }

    public void setFirstLetter(String firstLetter) {
        this.firstLetter = firstLetter;
    }

    public FriendInfo() {
    }

    public String getName() {
        return name;
    }

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

    public String getPinyin() {
        return pinyin;
    }

    public void setPinyin(String pinyin) {
        this.pinyin = pinyin;
    }
    
	@Override
    public int compareTo(FriendInfoom f) {
        //通过首字符比较进行升序排序
        return this.firstLetter - f.firstLetter;
    }
    
    @Override
    public String toString() {
        return "FriendEntity{" +
                "name='" + name + '\'' +
                ", pinyin='" + pinyin + '\'' +
                '}';
    }

}

}


/**
 * 测试代码
 */
Collections.sort(list);

实现Comparable可以使对象可比较的
方法二:

Collections.sort(friends, new Comparator<FriendInfo>() {
            @Override
            public int compare(FriendInfo f1, FriendInfo f2) {
                if (f1.getFirstLetter().contains("#")) {
                    return 1;
                } else if (f2.getFirstLetter().contains("#")) {
                    return -1;
                }
                else{
                    return f1.getFirstLetter().compareTo(f2.getFirstLetter());

                }
            }
        });

但是在jdk1.7版本以上,需要添加一条比对二者相等的情况,返回0,否则会报错
java.lang.IllegalArgumentException: Comparison method violates its general contract!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值