概述:
1.本文阐述对List(Array乱入)的排序问题。
2.Set和Map的排序 可使用TreeSet、TreeMap,见本博客的相关文章(下面提供连接)。
3.想对一个List进行排序有2种方法(数组也适用):
方法一:实现一个比较器Comparator。
方法二:List中的对象实现Comparable接口的compareTo方法。
4.完成上面一点后,集合使用Collections.sort,数组使用Arrays.sort进行排序。
package com.cxy.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; /** * @author cxy */ public class ListSortTest { public static void main(String[] args) { List <Student> l=new ArrayList(); Student s1 =new Student("小明",76); Student s2 =new Student("小黑",99); Student s3 =new Student("小白",60); l.add(s1); l.add(s2); l.add(s3); System.out.print("List排序前:"); System.out.println(l); //第一种方式:普通的对象,然后实现一个比较器,使用下面的方法进行排序 Collections.sort(l,new StudentComparator()); System.out.print("List排序后:"); System.out.println(l); System.out.println("======================="); //乱入的数组 Student[] sa={s1,s2,s3}; System.out.print("数组排序前:"); System.out.println(sa[0].toString()+sa[1]+sa[2]); Arrays.sort(sa,new StudentComparator()); System.out.print("数组排序后:"); System.out.println(sa[0].toString()+sa[1]+sa[2]); System.out.println("============下面的都是ComparableStudent演示==========="); //对象自身拥有排序能力 List<ComparableStudent> l1=new ArrayList(); ComparableStudent s11 =new ComparableStudent("较劲的小明",76); ComparableStudent s22 =new ComparableStudent("较劲的小黑",99); ComparableStudent s33 =new ComparableStudent("较劲的小白",60); //PS:较劲的意思可以理解为 争强好胜 o_o l1.add(s11); l1.add(s22); l1.add(s33); System.out.print("List排序前:"); System.out.println(l1); Collections.sort(l1); System.out.print("List排序后:"); System.out.println(l1); System.out.println("======================="); //数组再次乱入 ComparableStudent[] cs={s11,s22,s33}; System.out.print("数组排序前:"); System.out.println(cs[0].toString()+cs[1]+cs[2]); Arrays.sort(cs); System.out.print("数组排序后:"); System.out.println(cs[0].toString()+cs[1]+cs[2]); } } //一个普通的学生类,按照学生的学习成绩进行排序 //这里只是为了快速展示排序而设计的“简陋”的类,所以不要追究 你这个类设计的不科学,成员变量应该私有等问题。 class Student { public String name; //姓名 public int score; //分数 Student(String name,int score) { this.name=name; this.score=score; } @Override public String toString() { return "["+name+":"+score+"]"; } } //一个学生的比较器,泛型定义了比较的范围是Student,也可以不定义泛型,再在compare里面进行强制转换 class StudentComparator implements Comparator<Student> { @Override public int compare(Student s1, Student s2) { if(s1.score>s2.score) return 1; else if(s1.score<s2.score) return -1; else return 0; } } /** * 一个实现了Comparable接口的compareTo方法的学生类 * compareTo的实现方式: * x.compareTo(y)为例,当x小于y的时候,返回一个负数。当x大于y的时候,返回一个正数。相等的时候返回0. */ class ComparableStudent implements Comparable<ComparableStudent> { public String name; //姓名 public int score; //分数 ComparableStudent(String name,int score) { this.name=name; this.score=score; } @Override public int compareTo(ComparableStudent s) { if(score>s.score) return 1; else if(score<s.score) return -1; else return 0; } @Override public String toString() { return "["+name+":"+score+"]"; } }
PS:这里将很多类写在了一个文件里,目的就是为了方便大家拷贝参考。使用时不需要分开 直接拷贝运行。
相关文章连接:
声明:
1.原创文章,转载请标明并加本文连接。
2.更详尽的API请参见 http://docs.oracle.com/javase/7/docs/api/
3.文章反映个人愚见,如有异议欢迎讨论指正
相关推荐
JAVA排序汇总,java应用中一些比较经典的排序算法
java排序的图形界面编程,三种排序方式可以选择,并进行显示跟输出。
java排序算法使用及场景说明 文档后面有一些别人的链接,多在google上搜索Java排序算法,及维基百科上面也有很全的算法介绍。
基于JAVA开发的BM25排序模型,文件格式为xml。压缩包中含有示例文件xml。
拓扑排序拓扑排序应用系统java.zip拓扑排序应用系统java.zip拓扑排序应用系统java.zip
计算机的应用领域越来越广,但由于计算机硬件的速度和存储空间的有限性,如何提高计算机速度并节省存储空间一直成为软件编制人员努力的方向,在众多措施中,排序操作成为程序设计人员考虑的因数之一,排序方法选择...
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序的 Java 程序实现示例 1.1 ...
插入,堆和Shell排序,起泡排序,双向起泡和快速排序,经典的Hanoi塔问题的Java语言版 5.SoftwareLIVE是一个Java开发工具,包涵了各大知名厂商RAD系统的GUI开发环境,并透过完全视觉化的操作介面,让每个人都能轻易的...
java教程-数组应用+冒泡排序+选择排序+插入排序
在实际应用中,插入排序和现则排序因为实现简单,使用的比较多,但是在对效率要求比较高、且待排序数据量大的场合,还是应该采用时间复杂度较低的排序算法,因此对排序算法进行试验比较,增强实践认识很有必要。...
在实验中,我们使用 Java 语言实现了选择排序、冒泡排序和插入排序的算法,并对其进行了测试。实验结果表明,蛮力法和减治法可以有效地解决排序问题,而分治法也可以用于解决复杂的算法问题。 五、结论 蛮力法、减...
PRO192-Java core code in class project in class(DuyDT)prj 311-桌面Java应用程序库实践考试示例实践考试D201 -数据结构和算法我的链接表我的堆栈库我的树我的图我的哈希表我的排序库实践考试示例实践考试211-...
在Java中,冒泡排序的实现通常涉及嵌套的循环结构,通过比较和交换相邻元素来逐步完成排序过程。尽管在实际应用中,由于性能问题,冒泡排序很少被用作主要的排序算法,但其简洁易懂的特点使其成为教学示例和算法学习...
归并排序是一种基于分治策略的排序算法,它将待排序的数组分成若干个子数组,每个子数组再递归地进行...归并排序虽然需要额外的空间来存储临时数组,但其稳定的性能和可并行化的特点使其在实际应用中具有广泛的应用。
在Java中,选择排序的实现通常涉及两个嵌套的循环。外层循环控制未排序部分的起始位置,内层循环则用于在未排序部分中查找最小元素的索引,并将其与当前位置的元素进行交换。这种实现方式简单直观,但需要注意处理...
用java语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩,从键盘输入学员信息, 包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序 插入功能:在排序后的学员成绩表中...
密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。 将秘钥容器中的所有秘钥按照f(k)升序排列,以便...数据结构综合应用、排序算法综合应用、算法设计 程序可在eclipse直接导入,亲测可用
插入排序是一种简单直观的排序算法,其工作原理是通过构建有序序列,对于未排序数据,在已...尽管插入排序在处理大数据集时效率不高,但由于其实现简单且易于理解,它仍然被广泛应用于算法教学和基础数据结构课程中。
利用java语言编写的三种常见排序算法,其中体现封装了,打包各方面的应用
Java做的算法的应用。冒泡排序、二分排序、双向冒泡排序等算法的应用。带有例题。