python将对象放入列表根据某个属性排序_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

{

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 membergroup=new ArrayList<>();

Collections.reverse(membergroup);

java工具类之按对象中某属性排序

import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

看的时候,第9.5部分,"定义一个属性可由用户修改的装饰器",有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代 ...

IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:re ...

js 对象数组根据对象中的属性排序

function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = obje ...

java中两个对象间的属性值复制,比较,转为map方法实现

package com.franson.study.util; import java.lang.reflect.InvocationTargetException; import java.lang ...

Java集合-Python数据结构比较

Java list与Python list相比较 Java List:有序的,可重复的.(有序指的是集合中对象的顺序与添加顺序相同) Python list(列表)是有序的,可变的. Java Lis ...

python-面向对象-09_类属性和类方法

类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...

java和python对比

一:解释性和编译型 梳理 编译型:源代码经过编译直接变为二进制的机器语言,每次都可以直接重新运行不需要翻译.典型的就是c语言. 解释性:java和python都是解释型,源代码经过编译变为字节码文件, ...

随机推荐

python基础之函数

python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

linux下利用nginx部署python网站

首先目标机器需要安装python nginx uwsgi,其次,需要给Nginx写配置文件,大体内容如下,具体内容可见 http://blog.cn2p.com/web-server/nginx-uw ...

JAVA开发-我的第一个webScan扫描器

写的第一句话就是感谢shack2,参考了他的代码知道原来有的解耦可以这样写,但是又在他的基础上改写了很多. 代码分享给大写,下面是程序的截图,我把他取名为:HadesWebScan   ps:Wind ...

CentOS yum升级GCC到4.8

wget http://people.centos.org/tru/devtools-2/devtools-2.repo .repo /etc/yum.repos.d --binutils devto ...

js单页hash路由原理与应用实战

什么是路由? 通俗点说,就是不同的URL显示不同的内容 什么是单页应用? 单页,英文缩写为SPA( Single Page Application),就是把各种功能坐在一个页面内. 那所谓的单页路由应 ...

[java]负数的二进制编码——越是基础的越是要掌握

 ),第二位代表有几个10(即几个101),第三位代表有几个100(即有几个102)-,用小学课本上的说法就是:个位上的数表示几个1,十位上的数表示向个10,百位上的数表示几个100-- 同理可证 ...

小程序如何封装自定义组件(Toast)

1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容:

你可能感兴趣的:(python将对象放入列表根据某个属性排序_java和python根据对象某一个属性排序)