引言
最近在在项目中对list的一些操作还是比较多的,其中有很多内置的工具类都很强大,但是这些都是对于基本类型的操作,但是我们在项目中操作最多的是我们自定义的对象,所以一些操作还是需要我们自己来封装的,下面以排序和去重为例子。
一、去重
实体如下:
public class RobotCase implements Serializable { /** * 案件id */ private Long caseId; /** * 自增id */ private Long partnerId; /** * 甲方公司名称 */ private String clientName; /** * 借款人姓名 */ private String borrowerName; /** * 借款人性别 1 男 0 女 */ private Byte borrowerSex; /** * 借款人电话 */ private String borrowerTel; 。。。。。。。。 }
根据RobotCase实体中的borrowerTel字段进行去重,代码如下:
/** * @param * @return * @description 根据电话号码去重 * @date 14:39 2018/6/19 * @author zhenghao */ private List<RobotCase> removeDuplicateCase(List<RobotCase> cases) { Set<RobotCase> set = new TreeSet<>(new Comparator<RobotCase>() { @Override public int compare(RobotCase o1, RobotCase o2) { //字符串,则按照asicc码升序排列 return o1.getBorrowerTel().compareTo(o2.getBorrowerTel()); } }); set.addAll(cases); return new ArrayList<>(set); }
二、排序
1. public class Student { 2. private int age; 3. private String name; 4. 。。。 5. }
具体实现
/* * int compare(Student o1, Student o2) 返回一个基本类型的整型, * 返回负数表示:o1 小于o2, * 返回0 表示:o1和o2相等, * 返回正数表示:o1大于o2。 */ public List<Student>sort(List<Student>students){ Collections.sort(students, new Comparator<RobotCase>() { @Override public int compare(Student o1, Student o2) { //按照学生的年龄进行升序排列 ;<是降序 if(o1.getAge() > o2.getAge()){ return 1; } if(o1.getAge() == o2.getAge()){ return 0; } return -1; return o1.getAge()-o2.getAge();//升序 return o2.getAge()-o1.getAge();//降序 return o1.getName().compareTo(o2.getName()) ;// 按照姓名升序 return o2.getName().compareTo(o1.getName()) ;// 按照姓名降序 } }); return students; }