java 默认排序方式_Java Collections.sort()实现List排序的默认方法和自定义方法

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

主要代码:

list list = new arraylist();list.add("刘媛媛");

list.add("王硕");

list.add("李明");

list.add("刘迪");

list.add("刘布");

//升序

collections.sort(list,collator.getinstance(java.util.locale.china));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法

for(int i=0;i

{

system.out.print(list.get(i));

}

system.out.println("");

//降序

collections.reverse(list);//不指定排序规则时,也是按照字母的来排序的

for(int i=0;i

{

system.out.print(list.get(i));

}

输出结果:

李明刘布刘迪刘媛媛王硕

王硕刘媛媛刘迪刘布李明

2.自定义的排序规则:

第一种是model类实现comparable接口,重写重写int compareto(object o)方法

model类:

public class studentdto implements comparable

{

private string name;

private int age;

public string getname()

{

return name;

}

public void setname(string name)

{

this.name = name;

}

public objtype gettype()

{

return type;

}

public void setage(int age)

{

this.age= age;

}

@override

public int compareto(object o)

{

studentdto sdto = (studentdto)o;

int otherage = sdto.getage();

// note: enum-type's comparation depend on types' list order of enum method

// so, if compared property is enum-type ,then its comparationfollow objenum.objtype order

return this.age.compareto(otherage);

}

}

主方法:

public static void main(string[] args)

{

list studentlist = new arraylist();

studentdto s1 = new studentdto ();

s.setname("yuanyuan");

s.setage(22);

studentlist.add(s1);

studentdto s1 = new studentdto ();

s.setname("lily");

s.setage(23);

studentlist.add(s2);

collections.sort(studentlist); //按照age升序 22,23,

collections.reverse(studentlist); //按照age降序 23,22

}

第二种是比较器类实现comparator接口,重写int compare(object o1, object o2)方法;

model类:

public class studentdto implements comparable

{

private string name;

private int age;

public string getname()

{

return name;

}

public void setname(string name)

{

this.name = name;

}

public objtype gettype()

{

return type;

}

public void setage(int age)

{

this.age= age;

}

}

比较器类:

class mycompartor implements comparator

{

@override

public int compare(object o1, object o2)

{

studentdto sdto1= (studentdto )o1;

studentdto sdto2= (studentdto )o2;

return sdto1.getage.compareto(stdo2.getage())

}

}

主方法:

public static void main(string[] args)

{

list studentlist = new arraylist();

studentdto s1 = new studentdto ();

s.setname("yuanyuan");

s.setage(22);

studentlist.add(s1);

studentdto s1 = new studentdto ();

s.setname("lily");

s.setage(23);

studentlist.add(s2);

mycomparetor mc = new mycomparetor();

collections.sort(studentlist,mc); //按照age升序 22,23,

collections.reverse(studentlist,mc); //按照age降序 23,22

}

附注:

1.对于数组的排序方法如下:

string[] names = {"王林", "杨宝", "李镇", "刘迪", "刘波"};

arrays.sort(names, com.ibm.icu.text.collator.getinstance(com.ibm.icu.util.ulocale.simplified_chinese));//升序;

system.out.println(arrays.tostring(names));

2.对于汉字的排序:可以尝试使用icu4j会得到更好的结果,特别是姓为某些生僻字的时候,

用com.ibm.icu.text.collator替换java.text.collator,用com.ibm.icu.util.ulocale替换java.util.locale

3.对于枚举类型的enum1.compareto(enum2)是按照枚举类型值在定义时的先后顺序比较的,越后面的越大,

而不是按照值的字母先后顺序比较的。

以上所述是小编给大家介绍的java collections.sort()实现list排序的默认方法和自定义方法,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java random算法_负载均衡--随机算法(Random)

随机算法是指:从服务器列表中,随机选取一台服务器进行访问。由概率论可以得知,随着客户端调用服务端的次数增多,其实际效果趋近于平均分配请求到服务端的每一台服务器,也就是达到轮询的效果。一、算法描述假设有 N 台服…

Mysql group by 问题

根据标准sql规定,select字段(除聚合函数与)必须跟在group by后,但mysql除外,即select * from table a group by a.property 无报错 聚合函数如下: 1. avg() 取其平均数 2.count() 取其数量,返回值为int 3.…

java io体系_java IO流的体系结构图

常用字节流字符流字节流 InputStream 字符流 ReaderFileInputStream BufferedReaderFilte…

jetty java 禁用目录列表_java – 如何禁用Jetty的WebAppContext目录列表?

我将Jetty(版本7.4.5.v20110725)嵌入到java应用程序中。我使用Jetty的WebAppContext在./webapps/jsp/中提供JSP页面,但是如果我访问localhost:8080 / jsp /我获取了Jetty的目录列表,以获取./webapps/jsp/的所有内容。我已经尝试将dirAllowed参…

Arch Linux 安装总结

这篇随笔的目的: 这篇是我今天重新安装后,觉得每次都看别人的来复制,太麻烦了,每次自己解决的一些问题,又不能及时记录下来,导致每次都又需要一通乱找,肯定比第一次开始搜索的要快,但…

java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...

我正在尝试创建一个程序,要求用户提供正方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来.我几乎了解了,除了我似乎不太了解矩形的右边以正确打印出来…这是我的代码:import java.util.Scanner;public class warmup3{public static void main(String[] args){i…

2017.4.17------软件测试的艺术+整理以前的摘记

2017.4.17 以下内容来自《软件测试的艺术》 第1页——14页。供自己学习使用。 第一章 软件测试:就是一个过程或一个系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 第二章 测试人员需要有正确的态度。每当测试一…

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文) 导读:触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编…

java mask_Java 三大属性:

# Java 三大属性:面试时候问的一个很基础的问题,也是面向对象的三大特点。## 一、封装首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中&#xf…

java 事物_java事务

1、事务的四大特性(1)原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对数据库有任何影响(2)一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另…

【转】C#之继承

C#之继承 一.继承的类型  在面向对象的编程中,有两种截然不同继承类型:实现继承和接口继承  1.实现继承和接口继承  *实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生…

java 学习计划_Java学习计划范例

Java学习计划范例Java学习计划好的计划是成功的一半,今天是在创新思维的第一节课,在这门课程的开始,一个有策略的、有目的性的计划是非常必要的,为了在以后的学习中能够达到最好的.效果,"坚持"是一把雕刻刀&…

SQL Server 2012自动备份

SQL 2012和2008一样,都可以做维护计划,来对数据库进行自动的备份。 现在做这样一个数据库维护的计划,每天0点对数据库进行差异备份,每周日0点对数据库进行完全备份,并且每天晚上10点删除一次过期备份(两个星…

mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

一、前言本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置二、Mycat分片配置mycat分片主要在scheam.xml,rule.xml这2个表中配置① scheam.xml:配置逻辑表以及对应使用的分片规则select user()这里小编主要对t_user表…

JS取消浏览器文本选中的方法

一 、问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中,不知道其中是什么原因,如下图所示。 二 、解决思路 我最后的思路时在弹出消息框的同时,取消浏览器文本的选择,最后查找资料编写如下方法。  …

java 重构 if else_项目中的if else太多了,该怎么重构?

前言if else过多的话,一般都是用策略模式来进行重构,策略模式也非常的简单。先定义一个接口,各种处理分支实现这个接口,定义好 条件->处理类的映射关系,然后根据条件找到响应的处理类执行即可,当有新的分…

读书笔记:秘密

2017年立下了读30本书的旗子,现在这是第3本,是一本小说,东野圭吾的小说《秘密》。看小说也可以看出生活,但是是为了娱乐,是为了放松,小说本身挺好看的~引人入胜,一看到底类型。读书前…

mysql的student是什么意思_复习mysql

一、复习详尽如下:创建一个test库create database test;授权一个用户grant all privileges on *.* to xiang% identified by 1qazWSX;创建表create table student(id int not null);查询select * from tabel_name where 条件1 and 条件2增加insert into table_name …

算法复杂度的理解

算法复杂度的理解 from:http://blog.sina.com.cn/s/blog_4bab8e7f0102vmth.html算法复杂度分为时间复杂度和空间复杂度。 时间复杂度的计算 ​1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每…

php如何将mysql数据库中的admin字段赋值给session_php实现将Session写入数据库

/**author Fahy*数据库为mysql,*数据库名为session,表名为session,*表中字段包括PHPSESSID,update_time,client_ip,data*/class Session{private static $handler null;private static $ip null;private static $lifetime null;private st…