ArrayList实现自定义排序
来源:互联网 发布:淘宝网店需要多少钱 编辑:程序博客网 时间:2024/06/10 02:37
ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减。
字符串排序
ArrayList中存储的是String类型的数据,在对这个 ArrayList 进行排序,你需要调用 Collections.sort()方法
public class SortArrayListAscDes { private ArrayList arrayList; public SortArrayListAscDes(ArrayList arrayList) { this.arrayList = arrayList; } public ArrayList getArrayList() { return arrayList; } public ArrayList sortAscending(){ //升序排序方法 Collections.sort(this.arrayList); return this.arrayList; } public ArrayList sortDescending(){ //降序排序方法 Collections.sort(this.arrayList,Collections.reverseOrder()); return this.arrayList; }}
/*--------------Test---------------------*/public static void main(String[] args) { ArrayList stringArrayListist = new ArrayList<>(); stringArrayListist.add("Itlay"); stringArrayListist.add("China"); stringArrayListist.add("America"); stringArrayListist.add("Russian"); SortArrayListAscDes sortArrayListAscDes = new SortArrayListAscDes(stringArrayListist); System.out.println("没有经过排序的数组: "+stringArrayListist); System.out.println("升序排序: "+ sortArrayListAscDes.sortAscending()); System.out.println("降序排序: "+ sortArrayListAscDes.sortDescending()); }
在 sortDescending()方法中,我们调用重载的 Collections.sort()方法让其按照降序对元素排序,这个版本的 Collections.sort()接收ArrayList对象作为第一个参数,一个由 Collections.reverseOrder()方法返回的 Comparator 对象作为第二个参数。reverseOrder 指的是逆序。
Collections.sort() 方法对 ArrayList 的元素或者任何其他 List 的实现提供的可比较的元素进行排序,这意味着这些元素的类需要实现 Java.lang 包中的 Comparable 接口。正如 String 类实现了Comparable接口,Integer、Short、Double、Float、Boolean、BigInteger、BigDecimal、File 和 Date 类也都实现了Comparable接口。
使用Comparable排序
Comparable 是带有单一 compareTo()方法的接口。一个实现了 Comparable 接口的类对象可以与其它同类型的对象进行比较,实现 Comparable 接口的类需要重写 compareTo()方法,这个方法接收一个同类型的对象,并实现这个对象和传递给方法的另一个对象比较的逻辑。
public class Student implements Comparable<Student>,Serializable{ private String name; private String number; private float score1; private float score2; private float score3; private float totlescore; public Student() { } public Student(String name, String number, float score1, float score2, float score3) { this.name = name; this.number = number; this.score1 = score1; this.score2 = score2; this.score3 = score3; this.totlescore = score1 + score2 + score3; } //按学生总分的降序排列 @Override public int compareTo(Student o) { return (this.totlescore > o.totlescore ? -1 : (this.totlescore == o.totlescore ? 0 : 1)); }}
public class saveStudent { public List<Student> sortStudent(List<Student> sortlist){ Collections.sort(sortlist); return sortlist; }}
使用 Comparator 排序
public class JobCandidate { private String name; private String gender; private int age; public JobCandidate(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } //匿名内部类 public static Comparator ageComparator = new Comparator() { @Override public int compare(JobCandidate jc1, JobCandidate jc2) { return (jc2.getAge() < jc1.getAge() ? -1 :(jc2.getAge() == jc1.getAge() ? 0 : 1)); } }; public static Comparator nameComparator = new Comparator() { @Override public int compare(JobCandidate jc1, JobCandidate jc2) { return (int) (jc1.getName().compareTo(jc2.getName())); } };}
public class JobCandidateSorter { ArrayList jobCandidate = new ArrayList<>(); public JobCandidateSorter(ArrayList jobCandidate) { this.jobCandidate = jobCandidate; } public ArrayList getSortedJobCandidateByAge() { Collections.sort(jobCandidate, JobCandidate.ageComparator); return jobCandidate; } public ArrayList getSortedJobCandidateByName() { Collections.sort(jobCandidate, JobCandidate.nameComparator); return jobCandidate; } }
对compareTo和compare返回值的理解
A.compareTo(B);就是返回正数的话,当前对象(调用compareTo方法的对象A)要排在比较对象(compareTo传参对象B)后面;返回负数的话,放在前面;等于0两数相等。
compare(A,B);就是返回正数的话,当前对象A要排在比较对象B后面;返回负数的话,放在前面;等于0两数相等。
- ArrayList实现自定义排序
- JAVA ArrayList利用Comparator实现自定义排序
- ArrayList自定义排序
- ArrayList自定义排序
- ArrayList自定义排序的两种实现方式
- Arraylist<T>等实现自定义的排序算法
- 自定义实现ArrayList
- 自定义ArrayList实现
- List/ArrayList 排序实现
- ArrayList实现冒泡排序
- ArrayList 实现冒泡排序
- ArrayList 自定义排序(转)
- Java ArrayList的自定义排序
- Java ArrayList的自定义排序
- 自定义类,实现ArrayList基本功能
- BeanComparator实现ArrayList复合排序
- 实现 ArrayList 的 IComparer排序
- BeanComparator实现ArrayList复合排序
- Canvas 基础操作
- Java的三种代理模式
- 浅谈数据库设计
- QT设置Frame的边框颜色和形式
- 欢迎使用CSDN-markdown编辑器
- ArrayList实现自定义排序
- MYSQL之 1)临时表的应用场景 2)分表后的merge存储引擎查询应用场景
- 守护进程
- ashx一般处理程序
- 数据驱动,如何提高产品转发率
- android 模拟器INSTALL_FAILED-NO_MATCHING_ABIS:Failed to extract native libraries,res=-113
- iOS应用上架App Store流程解析
- af网络请求里,刷新tableview,reloaddate方法执行两次
- [AHK]操控IE登录百度的示例