[Java] 使用Comparator排序对象
package test.collections; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Test03 {
public static void main(String[] args){
List<Song> songs = new ArrayList<Song>();
songs.add(new Song(2,"黄家驹","光辉岁月"));
songs.add(new Song(5,"刘德华","忘情水"));
songs.add(new Song(44,"张学友","吻别"));
songs.add(new Song(32,"刘德华","爱你一万年"));
songs.add(new Song(123,"黄家驹","冷雨夜"));
songs.add(new Song(133,"小虎队","爱")); //Collections.sort(songs);
//Collections.sort(songs,new SongNameCompare());
//Collections.sort(songs,new SongSongerCompare());
Collections.sort(songs,new SongSongIdCompare());
printList(songs);
}
public static void printList(Collection<Song> c){
for(Song song:c){
System.out.println(song);
}
}
}
class SongNameCompare implements Comparator<Song>{ @Override
public int compare(Song o1, Song o2) {
// TODO Auto-generated method stub
return o1.getName().compareTo(o2.getName());
}
}
class SongSongerCompare implements Comparator<Song>{
@Override
public int compare(Song o1, Song o2) {
// TODO Auto-generated method stub
return o1.getSonger().compareTo(o2.getSonger());
}
}
class SongSongIdCompare implements Comparator<Song>{
@Override
public int compare(Song o1, Song o2) {
// TODO Auto-generated method stub
return o1.id>o2.id?1:(o1.id<o2.id?-1:0);
}
}
class Song implements Comparable<Song>{
private String name;
private String songer;
int id;
public Song(int id,String songer,String name) {
super();
this.id = id;
this.name = name;
this.songer = songer;
} @Override
public String toString() {
return "Song [name=" + name + ", songer=" + songer + ", id=" + id + "]";
} public Song() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSonger() {
return songer;
}
public void setSonger(String songer) {
this.songer = songer;
}
public int compareTo(Song s){
//使用this.id 和s.id做比较,如果返回值>1,表示顺序排序,返回值是<1的数表示倒序
if(this.id>s.id){
return 1;
}else if(this.id<s.id){
return -1;
}else {
return 0;
} //根据歌名排序
//return this.getName().compareTo(s.getName());
//根据歌手名排序
//return this.getSonger().compareTo(s.getSonger());
}
}
[Java] 使用Comparator排序对象的更多相关文章
- java运用Comparator为对象排序
要排序的类需要实现Comparator接口,重写compare方法: user类及实现接口的内部类: package test; import java.util.Comparator; public ...
- [转] Java中Comparator进行对象排序
[From] https://blog.51cto.com/thinklili/2063244 Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id ...
- 【java】实现Interface java.lang.Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序,和挽救式对象比较器Interface java.util.Comparator<T>
package 对象比较排序; import java.util.Arrays; class A implements Comparable<A>{ private String name ...
- Java 中Comparator 的使用,实现集合排序
目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 package com.app; import java.util.ArrayList; import java.util.Colle ...
- Java中Comparable和Comparator实现对象比较
1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- Comparable与Comparator,java中的排序与比较
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较. 排序:在集合类中,对集合类中的实体进行排序.排序基于的算法基于实体类提供的比较函数. 基本型别都提供了默认的比较算法,如s ...
- java list按照元素对象的指定多个字段属性进行排序
ListUtils.java---功能类 package com.enable.common.utils; import java.lang.reflect.Field;import java.tex ...
随机推荐
- linux jdk+mysql+tomcat+nginx 项目部署步骤
1.下载linux jdk1.7.0_79.tar.gz ; 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-dow ...
- 解决json包含html标签无法显示的问题
要是在json中包含html标签的话,在js接收数据的时候就会出现问题,导致接收失败. 所以在java端,对json包含有html标签的句子先进行转义. package com.alibaba.int ...
- java单例模式和双例模式
今天朋友找我给做道题,双例模式,我是没听说过,都说是单例模式和多例模式, 也不知道双例模式什么时候用,就简单写了一个案例,不知道对不对,个人感觉蛮对的,双例就是单例+单例,废话不说了!!!! /* * ...
- PHPCMS-首页的二级导航、轮播效果
导航栏:(header.html) <div id="menu"> <a href="{siteurl($siteid)}"><d ...
- Ruby Regexp
创建正则表达式对象 #以大写字母开始后面紧跟N个数字,方式一 reg = /[A-Z]\d+/ #方式二 reg = Regexp.new("[A-Z]\d+") reg = Re ...
- Struts2 - Study 1
领略下传说中的Struts2,写了个小例子,有点意思.比起.net中的MVC有意思的在于它是你自己一步步去配置实现,想怎么搞就怎么搞,.net的MVC,它干了什么事你完全不知,只不过知道怎么用而已. ...
- 【性能测试】性能测试总结<一>
目录: 一. 什么是软件性能 二.不同群体眼中的性能 三.性能测试类型 四.性能测试应用场景 五.性能测试基本概念 正文: 一. 什么是软件性能 定义:软件的性能是软件的一种非功能特性,它关注的不是软 ...
- 【jmeter】参数化User Defined Variables与User Parameters
偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一 ...
- 访问本机的WEB API 报400错误
当时用的IP是127.0.0.1 报400错误,换成 localhost 后正常.
- 【解决方案】: hyper-v 导入虚拟机报这个错误 32784
从win server 2012创建的虚拟机 导出后, 想导入到本机win8系统上,结果报错 32784, google了一堆,都说不支持... 实际上 1.在win8系统上 新建一个不带硬盘的虚拟机 ...