java类自定义实现类排序实现(Comparable或者额外类实现Comparator)
来源:互联网 发布:淘宝banner在线生成 编辑:程序博客网 时间:2024/06/15 17:25
1.自身类实现Comparable接口,重写public int compareTo(Object obj) {}方法
0 相等 正数 this > obj 负数 this < obj
然后加入到集合中,使用Collections.sort(list);调用即可
public class News implements Comparable {
private Date date;
private int number;
private String title;
public News() {}
public News(String title,int number,Date date) {
this.title = title;
this.number = number;
this.date = date;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle(String title) {
return this.title;
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
public void setDate(Date date) {
this.date = date;
}
public Date getDate() {
return this.date;
}
@Override
public int compareTo(News news) {
int result = 0;
result = this.date.compareTo(news.date);
//先按时间
if(result == 0) {
//点击量
result = -(this.number - news.number);
if(result == 0) {
//标题
result = -this.title.compareTo(news.title);
if(result == 0) {
return result;
} else {
return result;
}
} else {
return result;
}
} else {
return result;
}
}
@Override
public String toString() {
return title + " " + number + " " + date;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list = new ArrayList();
list.add(new News("hj",100,new Date()));
list.add(new News("za",60,new Date(System.currentTimeMillis() - 10000)));
list.add(new News("lb",80,new Date(System.currentTimeMillis() + 10000)));
System.out.println("排序前");
for(News n : list) {
System.out.println(n);
}
Collections.sort(list);
System.out.println("排序后");
for(News n : list) {
System.out.println(n);
}
}
}
打印结果是:
排序前
hj 100 Fri Oct 27 09:25:32 CST 2017
za 60 Fri Oct 27 09:25:22 CST 2017
lb 80 Fri Oct 27 09:25:42 CST 2017
排序后
za 60 Fri Oct 27 09:25:22 CST 2017
hj 100 Fri Oct 27 09:25:32 CST 2017
lb 80 Fri Oct 27 09:25:42 CST 2017
2.使用额外的类来实现{}方法
好处:独立于实体类 便于应对各种规则
加入到集合中,用Collections.sort(list, new 比较类());
public class Goods {
private String name;
private int number;
public Goods() {}
public Goods(String name,int number) {
this.name = name;
this.number= number;
}
@Override
public String toString() {
return name + " " + number;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
}
import java.util.Comparator;
public class SortGoods implements Comparator{
@Override
public int compare(Goods g1, Goods g2) {
//先按销量降序
int result = 0;
result = -(g1.getNumber() - g2.getNumber());
if(result == 0) {
//再按标题
result = -g1.getName().compareTo(g2.getName());
}
return result;
}
}
public class test {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Goods("zj",80));
list.add(new Goods("ajj",80));
list.add(new Goods("hjj",80));
list.add(new Goods("hjj",10));
System.out.println("排序前");
for(Goods g : list) {
System.out.println(g);
}
Collections.sort(list,new SortGoods());
System.out.println("排序后");
for(Goods g : list) {
System.out.println(g);
}
}
}
打印结果是:
排序前
zj 80
ajj 80
hjj 80
hjj 10
排序后
zj 80
hjj 80
ajj 80
hjj 10
0 相等 正数 this > obj 负数 this < obj
然后加入到集合中,使用Collections.sort(list);调用即可
public class News implements Comparable {
private Date date;
private int number;
private String title;
public News() {}
public News(String title,int number,Date date) {
this.title = title;
this.number = number;
this.date = date;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle(String title) {
return this.title;
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
public void setDate(Date date) {
this.date = date;
}
public Date getDate() {
return this.date;
}
@Override
public int compareTo(News news) {
int result = 0;
result = this.date.compareTo(news.date);
//先按时间
if(result == 0) {
//点击量
result = -(this.number - news.number);
if(result == 0) {
//标题
result = -this.title.compareTo(news.title);
if(result == 0) {
return result;
} else {
return result;
}
} else {
return result;
}
} else {
return result;
}
}
@Override
public String toString() {
return title + " " + number + " " + date;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list = new ArrayList();
list.add(new News("hj",100,new Date()));
list.add(new News("za",60,new Date(System.currentTimeMillis() - 10000)));
list.add(new News("lb",80,new Date(System.currentTimeMillis() + 10000)));
System.out.println("排序前");
for(News n : list) {
System.out.println(n);
}
Collections.sort(list);
System.out.println("排序后");
for(News n : list) {
System.out.println(n);
}
}
}
打印结果是:
排序前
hj 100 Fri Oct 27 09:25:32 CST 2017
za 60 Fri Oct 27 09:25:22 CST 2017
lb 80 Fri Oct 27 09:25:42 CST 2017
排序后
za 60 Fri Oct 27 09:25:22 CST 2017
hj 100 Fri Oct 27 09:25:32 CST 2017
lb 80 Fri Oct 27 09:25:42 CST 2017
2.使用额外的类来实现{}方法
好处:独立于实体类 便于应对各种规则
加入到集合中,用Collections.sort(list, new 比较类());
public class Goods {
private String name;
private int number;
public Goods() {}
public Goods(String name,int number) {
this.name = name;
this.number= number;
}
@Override
public String toString() {
return name + " " + number;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
}
import java.util.Comparator;
public class SortGoods implements Comparator{
@Override
public int compare(Goods g1, Goods g2) {
//先按销量降序
int result = 0;
result = -(g1.getNumber() - g2.getNumber());
if(result == 0) {
//再按标题
result = -g1.getName().compareTo(g2.getName());
}
return result;
}
}
public class test {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Goods("zj",80));
list.add(new Goods("ajj",80));
list.add(new Goods("hjj",80));
list.add(new Goods("hjj",10));
System.out.println("排序前");
for(Goods g : list) {
System.out.println(g);
}
Collections.sort(list,new SortGoods());
System.out.println("排序后");
for(Goods g : list) {
System.out.println(g);
}
}
}
打印结果是:
排序前
zj 80
ajj 80
hjj 80
hjj 10
排序后
zj 80
hjj 80
ajj 80
hjj 10
阅读全文
0 0
- java类自定义实现类排序实现(Comparable或者额外类实现Comparator)
- Java自定义实现Comparable接口的类,实现多维排序
- Java SE TreeSet(实现Comparable接口和Comparator匿名类)根据属性排序示例
- Comparable接口实现自定义类排序
- JAVA类中如何利用Comparator实现自定义排序
- Comparable实现自定义排序
- java实现排序的方法-继承Comparable和Comparator
- Java中使用Comparable和Comparator实现字段排序功能
- JAVA 利用Comparator实现自定义排序
- JAVA ArrayList利用Comparator实现自定义排序
- JAVA 使用Comparator接口实现自定义排序
- java实现comparator排序
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 实现 Comparable 和 Comparator 接口
- 实现comparable与comparator区别
- ionic3目录结构
- Python中PILImage和Python转化
- Python Function 函数
- 解决Jetbrains旗下产品的插件下载失败问题(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、AppCode、Android Studio等)
- 学习笔记:信息检索(0) 导论
- java类自定义实现类排序实现(Comparable或者额外类实现Comparator)
- HTML基本内容总结
- rewrite方法--2
- WebService之JAX-WS注解描述
- 欢迎使用CSDN-markdown编辑器
- java实现的顺序表栈
- java自己实现的链式栈
- [知了堂学习笔记]_Ajax之解析Json
- 深入理解java——多态与动态绑定