比如将一个List<Student>排序,则有两种方式:

1:Student实现Comparable接口:

2:给排序方法传递一个Comparator参数:

请看下面的举例:

Student类:

package demo;

//Student实现Comparable,需要实现compareTo方法
public class Student implements Comparable<Student>{
private String name;
private Integer age; public Student(String name,Integer age) {
// TODO Auto-generated constructor stub
this.name=name;
this.age=age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
if(this.age>o.getAge()){
return 1;
}
else if(this.age<o.getAge()){
return -1;
}
else{
return 0;
}
}
}

主类:

package demo;

import java.util.*;

public class main {

	public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list=new ArrayList<Student>();
Student s1=new Student("T-F", 18);
Student s2=new Student("H胡歌", 28);
Student s3=new Student("Z周润发", 50);
Student s4=new Student("M梅兰芳", 100);
list.add(s1);
list.add(s4);
list.add(s3);
list.add(s2); Iterator iterator=list.iterator();
System.out.println("------默认排序(按年纪)-------");
Collections.sort(list);
while(iterator.hasNext()){
Student s=(Student)iterator.next();
System.out.println(s.getName()+" "+s.getAge());
} System.out.println("------倒序排序-------");
Comparator comparator=Collections.reverseOrder();
Collections.sort(list,comparator);
Iterator iterator_reverse=list.iterator();
while(iterator_reverse.hasNext()){
Student s=(Student)iterator_reverse.next();
System.out.println(s.getName()+" "+s.getAge());
} System.out.println("------根据姓名排序-------");
Collections.sort(list,new Comparator<Student>(){
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o1.getName().compareTo(o2.getName());
}}
);
Iterator iterator_name=list.iterator();
while(iterator_name.hasNext()){
Student s=(Student)iterator_name.next();
System.out.println(s.getName()+" "+s.getAge());
} }
}
执行结果:

------默认排序-------

T-F 18

H胡歌 28

Z周润发 50

M梅兰芳 100

------倒序排序-------

M梅兰芳 100

Z周润发 50

H胡歌 28

T-F 18

------根据姓名排序-------

H胡歌 28

M梅兰芳 100

T-F 18

Z周润发 50

Java集合排序(看完秒懂)的更多相关文章

  1. Java集合排序及java集合类详解--(Collection, List, Set, Map)

    1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一 ...

  2. 深度分析:面试阿里,字节跳动,美团90%被问到的List集合,看完还不懂算我输

    1 List集合 1.1 List概述 在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素. 在List集合中,我们常用到Arr ...

  3. Java基础?看完以后再也不惧怕面试了

    前言 这篇文章主要是Java基础部分,主要分为3个部分:Java集合.Java多线.JVM:这些东西帮助我面试成功率提升了很多.后面还有中间件Spring.Redis.RocketMQ等等吧,祝愿大家 ...

  4. java 集合排序(转)

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  5. Java集合排序(面试必考点之一)

    集合是Java面试必考知识点,而集合的排序也是非常重要的,工作中经常用到,那么这个知识点也是必须要掌握的,下面是我曾经面试时被面试官问的问题: 根据API可知,Java集合的工具类Collection ...

  6. java 集合排序

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  7. Java集合排序方法comparable和comparator的总结

    一.概述Comparable和Comparator都是用来实现集合中元素的比较.排序的.Comparable是在集合内部定义的方法实现的排序,位于java.lang下.Comparator是在集合外部 ...

  8. 关于java集合排序

    对于排序,java开发者并不陌生. 为避免以后遗忘,现在再次总结一下! 常见8大排序算法, 平时自己熟悉的只有几种种!冒泡,二分/折半.插入.快排等!现在一一讲解一下,这里只讲思想,暂时不做实现! 一 ...

  9. Java集合排序

    [ 1.对普通的包装类基本数据类型的list数组排序(Integer,Long,Double) ] Collections.sort(List list) [例] List<Long> m ...

随机推荐

  1. Java API —— Calendar类

    1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段 ...

  2. UVa 10256 - The Great Divide 判断凸包相交

    模板敲错了于是WA了好几遍…… 判断由红点和蓝点分别组成的两个凸包是否相离,是输出Yes,否输出No. 训练指南上的分析: 1.任取红凸包上的一条线段和蓝凸包上的一条线段,判断二者是否相交.如果相交( ...

  3. linux 命令学习大全

    转载  http://blog.csdn.net/xiaoguaihai/article/details/8705992/

  4. php获取apk包信息的方法

    /*解析安卓apk包中的压缩XML文件,还原和读取XML内容 依赖功能:需要PHP的ZIP包函数支持.*/ include('./Apkparser.php'); $appObj = new Apkp ...

  5. CSS在不同浏览器兼容问题,margin偏移/offset溢出等

    margin在垂直取值时取最大值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  6. POJ 2065 SETI (高斯消元 取模)

    题目链接 题意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2.... 例如str[] = "abc&quo ...

  7. fil_system_struct

    /** The tablespace memory cache */ typedef struct fil_system_struct fil_system_t; /** The tablespace ...

  8. HDU 1078 FatMouse and Cheese【记忆化搜索】

    题意:给出n*n的二维矩阵,和k,老鼠每次最多走k步,问老鼠从起点(0,0)出发,能够得到的最大的数(即为将每走过一点的数都加起来的和最大)是多少 和上一题滑雪一样,搜索的方向再加一个循环 #incl ...

  9. [反汇编练习] 160个CrackMe之015

    [反汇编练习] 160个CrackMe之015. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  10. RPi 2B Raspbian SD卡内部架构

    /***************************************************************************** * RPi 2B Raspbian SD卡 ...