首页 > 编程知识 正文

list自定义排序,数据库默认排序

时间:2023-05-03 22:37:45 阅读:151204 作者:2906

一. java提供的默认list排序方法

主要代码:

List list=new ArrayList (;

list.add (纯真的小笼包);

刘媛媛list.add;

list.add (黄鳝);

list.add(CQDBM );

//升序

collections.sort(list,collator.getinstance ) Java.util.locale.China; //注意:是按照的汉字拼音字母排序的,不是汉字一般的排序方法

for(intI=0; I

{

system.out.print(list.get(I ) ';

}

System.out.println (' ' ); //cqdbm鳖包刘媛媛纯真小笼包

//降序

collections.reverse(list; //如果未指定排序规则,也会按字母顺序排序

for(intI=0; I

{

system.out.print(list.get(I ) ';

}

System.out.println (' ' ); //纯真小笼包刘媛鳗鱼包cqdbm

2 .定制排序规则

(第一个是model类安装Comparable接口,并重写intcompareto(objecto )方法

publicclassstudentimplementscomparable {

私有字符串名称;

私有输入;

公共字符串获取名称

return name;

}

公共void set name (string name ) {

this.name=name;

}

公共获取页面() {

返回age;

}

公共语音设置(intage ) {

this.age=age;

}

@Override

公共公司到(objecto ) {

//todo自动生成方法stub

studentsdto=(student ) o;

//以姓名为第一关键字,以年龄为第二关键字按升序排序。

int i=0;

I=name.comPareto(sdto.name ); //使用字符串进行比较

if(I==0) )//如果名字相同,则比较年龄,返回年龄比较的结果

return age - sdto.age;

} else {

return i; 因为名字不同,所以返回比较名字的结果。

}

}

}

List studentList=new ArrayList (;

Student s1=new Student (;

S1.setname(Yuanyuan );

S1.setage(22;

sudentlist.add(S1;

Student s2=new Student (;

S2.setname(kddjmg );

S2.setage(25;

sudentlist.add(S2;

Student s3=new Student (;

S3.setname(Yuanyuan );

S3.setage(23;

sudentlist.add(S3;

collections.sort(studentlist;

system.out.print('n ' );

后台3360后台列表(for ) {

system.out.println (student.get age () ' : ' student.getName ) );

}

结果:

25 : kddjmg

22 :元元

23 :元元

)二是比较器类安装Comparator接口,改写intcompare(objecto1,Object o2 )的方法。 (策略设计模式)

如果类本身不支持排序(也就是说,没有实现Comparable接口),则必须控制类的顺序,然后可以为此类创建比较器并对其进行排序。 这个比较器只是实现Comparator接口。

实现namely,Comparator类以创建新的比较器,并按该比较器对类进行排序。 公司界面其实是战略模式的实践

比较器类:

publicclassstudentcomparatorimplementscomparator {

@Override

公共输入公司(Object o2,Object o2 ) {

//todo自动生成方法stub

studentone=(student ) o1;

sudentanother=(student ) o2;

int i=0;

i=one.getName ().comPareto ) (another.getname ) ); //使用字符串进行比较

if(I==0) )//如果名字相同,则比较年龄,返回年龄比较的结果

return one.get age (-another.get age );

} else {

return i; 因为名字不同,所以返回比较名字的结果。

}

}

}

List studentList=new ArrayList (;

Student s1=new Student (;

S1.setname(Yuanyuan );

S1.setage(22;

sudentlist.add(S1;

Student s2=new Student (;

S2.setname(kddjmg );

S2.setage(25;

sudentlist.add(S2;

Student s3=new Student (;

S3.setname(Yuanyuan );

S3.setage(23;

sudentlist.add(S3;

collections.sort(studentlist,new StudentComparator () );

system.out.print('n ' );

后台3360后台列表(for ) {

system.out.println (student.get age () ' :' student.getName ) );

}

}

结果: 25 : kddjmg

22 :元元

23 :元元

比较Comparable和Comparator

Comparable是一个排序接口; 如果类实现了Comparable接口,则表示“该类支持排序”。

Comparator是比较器; 如果需要控制类的顺序,可以创建“类比较器”并对其进行排序。

前者是相对固定的,应该与特定的类联系在一起,但后者相对灵活,可以用于需要比较功能的各级。 可以说前者是“静态绑定”,而后者是“动态绑定”。

可见Comparable相当于“内部比较器”,Comparator相当于“外部比较器”。

地图转换为列表进行排序

publicstringcreatestring (map params ) list keys=new ArrayList (params.keyset ); collections.sort(keys; String prestr=' '; for(intI=0; i keys.size (; I ) {stringkey=keys.get(I ); stringvalue=Params.get(key ); if(I==keys.size(-1 ) {/prestr=prestr key '=' value; } else { prestr=prestr key '=' value '; } } return prestr; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。