java--对象比较器
2015-10-27 22:05
423 查看
在实际的项目中,经常会遇到排序问题,对于基本数据类型java支持Arrays.sort()和Collection.sort()对集合进行排序,但是对用户自定义类型排序呢?java给我们提供了两种解决方案。
一:通过实现Comparable<Object> 在内部实现
示例代码:package com.lky.model; import java.io.Serializable; @SuppressWarnings("serial") public class Student implements Serializable, Comparable<Student> { private String name; private Integer id; private String log; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLog() { return log; } public void setLog(String log) { this.log = log; } @Override public String toString() { return "Student [name=" + name + ", id=" + id + ", log=" + log + "]"; } @Override public int compareTo(Student o) { return o.getId()-id; } }
二.通过实现 Comparator<Object> 来定义排序规则
示例代码:package com.lky.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Random; import org.junit.Test; import com.lky.model.Student; public class compartorTest { public class OutComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { int result = 0; result = o1.getId() - o2.getId(); if (result == 0) { return o1.getName().compareTo(o2.getName()); } else { return result; } } } @Test public void test() { List<Student> array = new ArrayList<Student>(); for (int i = 0; i < 20; ++i) { Student student = new Student(); student.setId(new Random().nextInt(10) + 1); student.setLog("log" + i); student.setName("lky" + i); array.add(student); } Collections.sort(array);// 采用默认排序 // Collections.sort(array, new OutComparator());//采用自定义排序 for (Student student : array) { System.out.println(student); } } }
相关文章推荐
- java Vamei快速教程12 类型转换和多态
- Java实现排序算法之冒泡排序
- java基础 集合框架 简单总结
- MyEclipse 10 集成Maven
- java --配置文件读取
- (转)SpringSecurity扩展User类,获取Session
- spring+mybatis多数据源配置
- Java:多线程之生产者与消费者
- java Vamei快速教程11 对象引用
- 矩阵------顺时针打印矩阵+顺时针旋转矩阵+之字形打印矩阵(Java)
- java工厂模式
- Eclipse 工作目录被破坏,导致Eclipse 打不开
- Java:多线程
- .以及JDK1.5ConcurrentHashMap新特性
- 记录-Head first java-1到3章
- java中Iterator和Iterable的区别
- Spring controller
- 1、Ant编译一般Java项目的步骤
- Java 对类中的属性使用set/get方法的意义和用法
- 在eclipse 上配置maven