java和python根据对象某一个属性排序

最近在学习java,目前看到java如何对一个对象列表进行排序。

我有一个Member类:

public Member(String name,Calendar birthday,Sex gender,String emailaddress)
    {
        
        this.name=name;
        this.birthday=birthday;
        this.emailaddress=emailaddress;
        this.gender=gender;
    }
    public Member()
    {
        
    }
    public int getAge()
    {
        Calendar calendar= Calendar.getInstance();
        Integer age=calendar.get(Calendar.YEAR)-birthday.get(Calendar.YEAR);
        if(calendar.get(Calendar.MONTH)>birthday.get(Calendar.MONTH))
        {
            age+=1;
        }
        return age;
    }

现在要对几个member根据Age来排序,java里我现在学的做法是继承compatator的接口,写一个比较器之类的东西,然后通过Array.sort(list,cmp)来比较。

Member[] members=membergroup.toArray(new Member[membergroup.size()]);
        for(Member member:members)
        {
            member.printMember();
        }
        class MemberAgeComparator implements Comparator<Member>
        {
            public int compare(Member member1,Member member2)
            {
                //compareTo,两个对象属性之间的比较,返回负数,0和正数
                return member1.getBirthday().compareTo(member2.getBirthday());
            }
        }
        
        Arrays.sort(members,new MemberAgeComparator());

因为自己对python稍微熟悉一点,就想python是不是也是可以类似的方法进行排序,其实都是一样,通过sort()根据自定义的比较器来比较.

#-*-coding:utf-8
'''
属性排序
'''


class Member(object):

    def __init__(self,age):
        self.age=age


    def getAge(self):
        return self.age


    def printAge(self):
        print self.age


if __name__=="__main__":
    member1=Member(17)
    member2=Member(14)
    membergroup=[member1,member2]
    for member in membergroup:
        member.printAge()
    print membergroup
    membergroup.sort(cmp=lambda x,y:cmp(x.getAge(),y.getAge()),reverse=True)
    for member in membergroup:
        member.printAge()

唯一要我觉得麻烦就是,如果是逆序输出的话,python可以直接有一个参数reverse来表示正序还是逆序,但是java的好像没有这个参数。

通过Collectons.reverse(List<?>)

        ArrayList<Member> membergroup=new ArrayList<>();
        Collections.reverse(membergroup);

 

 

 

 

 

posted @ 2013-08-21 19:05  夏木友人  阅读(757)  评论(0编辑  收藏  举报