ArrayList自定义排序
来源:互联网 发布:前端数据可视化 编辑:程序博客网 时间:2024/06/08 05:10
ArrayList实现自定义排序
这几天练习的时候想着学习一下List的使用,从ArrayList入手。
正好需要完成一个排序,之前在看常用类的方法的时候知道ArrayList类下有一个现成的sort()方法,于是就想拿来使用。
不过之后发现这个sort()方法用来排序基本类型变量还可以,但是当ArrayList中存储的是引用类型变量时就不好用了,于是决定进一步研究看看。
于是顺便把Collections.sort的用法也给学习了一下。
如果只需要将基本数据类型进行正序排列,我们只需直接调用Collections.sort()或List.sort()就可以了,两者实现的都是从小到大排序。
public class FirstJava { public static void main(String[] args) { List<Integer> intList = Arrays.asList(2, 3, 1); Collections.sort(intList); intList.sort(null); for (Integer print : intList) { System.out.println(print); } }}// 1// 2// 3
如果想要由大到小进行排序,我们就绪要自定义一个比较器。
public class FirstJava { public static void main(String[] args) { List<Integer> intList = Arrays.asList(2, 3, 1); Collections.sort(intList, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }); for (Integer print : intList) { System.out.println(print); } }}// 3// 2// 1
代码中的匿名内部类就是我们需要的构造器,通过compareTo方法,当o2比o1大时返回一个大于0的数,小时返回一个小于0的数。对于List.sort(c);同样的
public class FirstJava { public static void main(String[] args) { List<Integer> intList = Arrays.asList(2, 3, 1); intList.sort( new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }); for (Integer print : intList) { System.out.println(print); } }}// 3// 2// 1
但是上述这些都是对基本数据类型变量进行排序,那么我们怎么对其进行扩展使可以再各种地方使用sort呢?
public static void sortByAge(ArrayList<CompanyMember> enterpriseMembers) { Collections.sort(enterpriseMembers,new SortByAge()); enterpriseMembers.sort(new SortByAge()); for(CompanyMember tempForShow : enterpriseMembers) { System.out.println(tempForShow.toString()); } }
这是我练习时使用的一个方法,实现把公司成员依年龄进行排序。
class SortByAge implements Comparator { @Override public int compare(Object o1, Object o2) { CompanyMember emp1 = (CompanyMember) o1; CompanyMember emp2 = (CompanyMember) o2; return ((Integer) emp1.getAge()).compareTo((Integer) (emp2.getAge())); }}
这是我自定义的一个比较器,实现Comparator接口来完成需要的自定义比较
两者结合就可以了。
阅读全文
0 0
- ArrayList自定义排序
- ArrayList实现自定义排序
- ArrayList自定义排序
- ArrayList 自定义排序(转)
- Java ArrayList的自定义排序
- Java ArrayList的自定义排序
- 对ArrayList的自定义元素进行排序
- Array和ArrayList的自定义排序问题
- [LIST]ArrayList的自定义排序方法
- JAVA中ArrayList的自定义排序
- java自定义ArrayList排序, 大神略过
- java对ArrayList中的元素自定义排序
- C#自定义对象排序(数组/ArrayList)
- java对ArrayList中的元素自定义排序
- JAVA ArrayList利用Comparator实现自定义排序
- 自定义arraylist
- 自定义ArrayList
- 自定义ArrayList
- 【详细版】Nginx的安装与配置
- scanf函数的误区
- 2016ACM/ICPC亚洲区大连站【solved:10 / 11】
- 安装Linux
- scala并行化集合
- ArrayList自定义排序
- 欢迎使用CSDN-markdown编辑器
- 排查tomcat服务性能瓶颈
- UVA10601 & Caioj1241【Polya计数法】Cubes
- 300.30 response实现文件下载
- 18、Date对象、常用方法、对象、标签、事件
- codeforces 555C
- 自定义抛出异常
- 《JAVA多线程编程的艺术》-volatile重排序规则理解