Java中集合排序---点击表头对数据进行排序
来源:互联网 发布:linux使用排行榜 编辑:程序博客网 时间:2024/04/28 07:10
Java中对集合的排序,因为项目中得实现一个点击表头对数据进行排序的功能,当然实现这个效果并不难,你完全可以在点击表头时向Action中发出一个请求,然后在利用排序的Hql语句对数据进行排序,这样你完全可以达到目地;但是性能可就不高了咯。。。。。
下面介绍下对集合进行自定义的排序,因为很多情况下,集合中的数据保存的都是类对象,我们要对集合进行排序,换句话讲就是根据类中定义的属性对类进行排序。。。Java中对类进行排序处理,满足两个要求,1:实现Comparable接口,实现publicint compareTo(Object o)方法就OK了, 这个compareTo方法返回值是个int类型,若大于0则表示按升序,0表示类对象大小相同,小于0则表示类对像按降序排列了;
我们举例说明:
package com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
public class Book implements Comparable<Book> {
// 对象的排序方式[升、降]
private static boolean sortASC = true;
// 对象的排序属性
private static boolean sortBybId = false;
private static boolean sortBybName = false;
private static boolean sortBybDate = false;
//类属性
private int bId;
private String bName;
private Date bDate;
//构造方法
public Book(int id, String name, Date date) {
super();
bId = id;
bName = name;
bDate = date;
}
//必须实现的方法
public int compareTo(Book book) {
if (sortBybId) {
if (sortASC)
return this.bId > book.bId ? 1 : this.bId == book.bId ? 0 : -1;
else
return this.bId > book.bId ? -1 : this.bId == book.bId ? 0 : 1;
} else if (sortBybName) {
if (sortASC) {
int result = this.bName.compareTo(book.bName);
return result;
} else {
int result = this.bName.compareTo(book.bName);
return result > 0 ? -1 : result == 0 ? result : 1;
}
} else if (sortBybDate) {
if (sortASC) {
int result = this.bDate.compareTo(book.bDate);
return result;
} else {
int result = this.bDate.compareTo(book.bDate);
return result > 0 ? -1 : result == 0 ? result : 1;
}
}
return 1; //默认返回值;
}
//测试
public static void main(String[] args) throws ParseException {
List<Book> lst = new ArrayList<Book>();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
lst.add(new Book(1, "aaa",sdf.parse("2001-1-1")));
lst.add(new Book(4, "fff",sdf.parse("2001-10-5")));
lst.add(new Book(3, "zzzz",sdf.parse("2001-2-1")));
//我想按对象的编号升序排列
// Book.sortASC=true;
// Book.sortBybId=true;
//我想按对象的编号降序排列
// Book.sortASC=false;
// Book.sortBybId=true;
//我想按对象的姓名降序排列
// Book.sortASC=false;
// Book.sortBybName=true;
// 我想按对象的时间降序排列
Book.sortASC=false;
Book.sortBybDate=true;
Book[] book = lst.toArray(new Book[] {});
Arrays.sort(book); //开发循环调用compareTo方法
lst = Arrays.asList(book);
//排序后输出
for (Book b : lst) {
System.out.println("bid==" + b.bId + " bName==" + b.bName);
}
//排序属性值恢复
Book.sortBybId = false;
Book.sortBybName = false;
Book.sortBybDate = false;
// Book[] book = new Book[] { new Book(4, "aaa"), new Book(3, "bbb") };
// for (Book book2 : book) {
// System.out.println("bid==" + book2.bId + " bName==" + book2.bName);
// }
// Arrays.sort(book);
// for (Book book2 : book) {
// System.out.println("bid==" + book2.bId + " bName==" + book2.bName);
// }
}
}
- Java中集合排序---点击表头对数据进行排序
- 如何对Scala中集合进行排序
- Java中集合排序
- C#:ListView 点击表头对数据排序
- 对java中集合类排序的解析
- Hibernate中集合排序
- js 点击表头进行排序
- Js-点击表头进行排序
- JAVA中集合的排序方法
- java中集合怎么定义排序方法
- 点击表头自动排序 java
- C#中集合的排序
- map中集合的排序
- 禁止DataGridView点击表头进行排序(WinForm)
- EasyUI 中datagrid 点击表头进行排序
- QT中QTableView 点击表头进行排序
- Java中集合排序的两种方法
- js对table排序(类似点击Excel表头排序)
- 第11周项目-百钱百鸡问题
- java 基础之Socket
- dede织梦模板目录大全,绝对有帮助
- FirefoxDriver开启快速加载后的安全findElement方式
- TFOJS-1312-[10CS-Data Structure]Experiment 3: Calculating Expression
- Java中集合排序---点击表头对数据进行排序
- 病狗问题
- 第11周项目-大赛评分
- zoj1008-gnome tetravex
- java socket 学习
- 乘法口诀表
- 特南鲍姆编著经典教材《COMPUTER NERWORKS》翻译
- 项目开发流程
- 技巧_MFC_快捷键