Java集合排序(看完秒懂)
比如将一个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集合排序(看完秒懂)的更多相关文章
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
1 集合框架 1.1 集合框架概述 1.1.1 容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一 ...
- 深度分析:面试阿里,字节跳动,美团90%被问到的List集合,看完还不懂算我输
1 List集合 1.1 List概述 在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素. 在List集合中,我们常用到Arr ...
- Java基础?看完以后再也不惧怕面试了
前言 这篇文章主要是Java基础部分,主要分为3个部分:Java集合.Java多线.JVM:这些东西帮助我面试成功率提升了很多.后面还有中间件Spring.Redis.RocketMQ等等吧,祝愿大家 ...
- java 集合排序(转)
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
- Java集合排序(面试必考点之一)
集合是Java面试必考知识点,而集合的排序也是非常重要的,工作中经常用到,那么这个知识点也是必须要掌握的,下面是我曾经面试时被面试官问的问题: 根据API可知,Java集合的工具类Collection ...
- java 集合排序
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
- Java集合排序方法comparable和comparator的总结
一.概述Comparable和Comparator都是用来实现集合中元素的比较.排序的.Comparable是在集合内部定义的方法实现的排序,位于java.lang下.Comparator是在集合外部 ...
- 关于java集合排序
对于排序,java开发者并不陌生. 为避免以后遗忘,现在再次总结一下! 常见8大排序算法, 平时自己熟悉的只有几种种!冒泡,二分/折半.插入.快排等!现在一一讲解一下,这里只讲思想,暂时不做实现! 一 ...
- Java集合排序
[ 1.对普通的包装类基本数据类型的list数组排序(Integer,Long,Double) ] Collections.sort(List list) [例] List<Long> m ...
随机推荐
- jQuery-瀑布流-浮动布局(一
jQuery-瀑布流-浮动布局(一)(延迟AJAX加载图片) 瀑布流:这种布局适合于小数据块,每个数据块内容相近且没有侧重.通常,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部 ...
- struct dev_t
device number(dev_t) linux driver 2009-08-21 10:08:03 阅读26 评论0 字号:大中小 dev_t description: the dev ...
- vs2008 编译时候 自动关闭 问题解决方法
最近又出现如此让人崩溃的问题. vs2008在编译程序时候老是莫名其妙的自动退出.卸载重装以后问题仍然存在. 害我一度以为是vs2008的BUG,看网上说的更新BUG. ...
- NSAutoReleasePool
做iPhone应用开发已经2年多了, 但一些基础的概念性问题只是大致了解, 脑袋中有个模糊的概念. 虽然对平时工作开发没什么影响, 不过时间长了, 心里总是有点虚. 所以从现在开始, 每当我遇到一个模 ...
- [swustoj 771] 奶牛农场
奶牛农场 Description 将军有一个用栅栏围成的矩形农场和一只奶牛,在农场的一个角落放有一只矩形的箱子,有一天将军要出门,他就把奶牛用一根绳子套牢,然后将绳子的另一端绑到了那个箱子不靠栅栏的角 ...
- cocos2d-x 小技巧
1.字符串 与 数据结构互转 CCPoint: CCPointFromString(); {x, y} CCSize: CCSizeFromString(); {w, h} CCRect: CCSiz ...
- Spring学习之AOP
Spring-AOP(Aspect-orented programming) 在业务流程中插入与业务无关的逻辑,这样的逻辑称为Cross-cutting concerns,将Crossing-cutt ...
- 【DFS+记忆搜索】NYOJ-10-Skiing
[题目链接:NYOJ-10] skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑 ...
- 【转】iOS学习之Autolayout(代码添加约束) -- 不错不错
原文网址:http://www.cnblogs.com/HypeCheng/articles/4192154.html DECEMBER 07, 2013 学习资料 文章 Beginning Auto ...
- ASP.NET 经典60道面试题
转:http://bbs.chinaunix.net/thread-4065577-1-1.html ASP.NET 经典60道面试题 1. 简述 private. protected. public ...