- 浏览: 31350 次
- 性别:
- 来自: 湖北
最新评论
-
白色蜻蜓:
准备向objc进展准备中。。。
Objective-C -
day6:
请教下:不要用StringBuffer代替字符串相加 这是为 ...
高性能JAVA开发之内存管理 -
……蚂蚁……:
不错 湖北的 顶
用collection.sort()方法对list集合排序
第一种是list中的对象实现Comparable接口,如下:
/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
测试一下:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
主类中这样写即可:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
// 第一次比较专业
int i = arg0.getOrder().compareTo(arg1.getOrder());
// 如果专业相同则进行第二次比较
if(i==0){
// 第二次比较
int j=arg0.getXXX().compareTo(arg1.getXXX());
// 如果学制相同则返回按年龄排序
if(j==0){
return arg0.getCCC().compareTo(arg1.getCCC());
}
return j;
}
return i;
}
});
以下是另外一个例子
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Exmployee> arrayList = new ArrayList<Exmployee>() ;
arrayList.add(new Exmployee("zengqiang",new Integer(5000))) ;
arrayList.add(new Exmployee("zengmin",new Integer(4000))) ;
arrayList.add(new Exmployee("liuxiaojuan",new Integer(4200))) ;
arrayList.add(new Exmployee("giuming",new Integer(2200))) ;
Collections.sort(arrayList, new Comparator<Exmployee>(){
public int compare(Exmployee arg0, Exmployee arg1) {
return arg1.getSalary()-arg0.getSalary() ; //按照工资升序
//return arg0.getSalary()-arg1.getSalary() ; 按照工资降序
//return arg0.getName().compareTo(arg1.getName()) ; 按照姓名升序
}
});
for(Exmployee e:arrayList)
System.out.println(e.getName()+"'s salary is "+e.getSalary()) ;
}
}
class Exmployee {
public Exmployee(String name, int salary) {
this.name = name ;
this.salary = salary ;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
private int salary;
}
/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
测试一下:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
主类中这样写即可:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
// 第一次比较专业
int i = arg0.getOrder().compareTo(arg1.getOrder());
// 如果专业相同则进行第二次比较
if(i==0){
// 第二次比较
int j=arg0.getXXX().compareTo(arg1.getXXX());
// 如果学制相同则返回按年龄排序
if(j==0){
return arg0.getCCC().compareTo(arg1.getCCC());
}
return j;
}
return i;
}
});
以下是另外一个例子
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Exmployee> arrayList = new ArrayList<Exmployee>() ;
arrayList.add(new Exmployee("zengqiang",new Integer(5000))) ;
arrayList.add(new Exmployee("zengmin",new Integer(4000))) ;
arrayList.add(new Exmployee("liuxiaojuan",new Integer(4200))) ;
arrayList.add(new Exmployee("giuming",new Integer(2200))) ;
Collections.sort(arrayList, new Comparator<Exmployee>(){
public int compare(Exmployee arg0, Exmployee arg1) {
return arg1.getSalary()-arg0.getSalary() ; //按照工资升序
//return arg0.getSalary()-arg1.getSalary() ; 按照工资降序
//return arg0.getName().compareTo(arg1.getName()) ; 按照姓名升序
}
});
for(Exmployee e:arrayList)
System.out.println(e.getName()+"'s salary is "+e.getSalary()) ;
}
}
class Exmployee {
public Exmployee(String name, int salary) {
this.name = name ;
this.salary = salary ;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
private int salary;
}
发表评论
-
jsp预览图片——兼容firefox IE7 IE8
2011-12-27 17:47 1246<!DOCTYPE html PUBLIC " ... -
android
2011-08-29 20:47 0http://www.mars-droid.com/ -
高性能JAVA开发之内存管理
2011-07-26 17:17 1071一、JVM中的对象生命周期 对象的生命周期一般分为7个阶段: ... -
DIV+CSS
2011-07-19 22:41 0DIV+CSS -
java面试参考
2011-03-01 22:58 757java面试参考 -
linux命令大全
2011-03-01 22:53 661linux命令大全 -
我的个人资料
2011-02-28 07:46 737我的个人资料 -
在Ant中使用javac命令,出现资源不足解决方案
2011-02-22 16:26 4397在Ant中使用javac命令,抛出的java.lang.Out ... -
快速排序
2011-02-22 11:50 0快排是分治法的一个应用,快排主要是通过一个设定枢轴,然后以这个 ... -
XML的4中解析方式
2011-02-21 15:19 867XML现在已经成为一种通 ... -
BeanShell执行标准Java语句和表达式
2011-02-18 16:01 1886在项目中可能会遇到各种不同的公式计算,如:result= 变量 ... -
Escape,encodeURI,encodeURIComponent
2010-11-08 10:45 957Escape,encodeURI,encodeURICom ... -
Objective-C
2010-10-24 16:43 1083Objective-C,通常写作ObjC和较少用的Ob ... -
js中禁止粘贴text
2010-10-21 16:34 989<body> <script type=&q ... -
获取中文汉字所占的字符长度
2010-10-21 16:29 839<script> alert (fucChe ... -
ibatis动态查询条件
2010-10-16 22:32 1114IBatis 动态查询条件 下面这个配置基本上包含了最复杂的 ... -
基于jQuery的AJAX和JSON实现纯html数据模板
2010-07-28 21:52 2235通过jQuery内置的AJAX功能,直接访问后台获得JSON格 ... -
java.sql.Date、java.util.Date与数据库中的Date字段的转换方法
2010-07-20 20:51 1367JAVA 处理时间 - java.sql.Date、java. ...
相关推荐
1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...
java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...
对于List,可以使用Collections.sort()方法进行排序,对于Map,通常需要转换成List后再排序。例如,对于TreeMap,其内部已经按照键的自然顺序或比较器排序。 总结,Java集合框架提供了丰富的数据结构和操作,理解并...
### Java集合排序及java集合类详解(Collection、List、Map、Set) #### 集合框架概述 ##### 容器简介 在Java编程中,容器(Container)是指用来存储和管理对象的一种数据结构。随着应用程序复杂度的增加,简单地...
对于排序,List可以通过Collections.sort()方法进行排序,Map的键可以使用TreeMap来自动排序,而Set如需要排序,可以使用SortedSet接口的实现类,如TreeSet。 总之,Java集合框架是Java程序员必须掌握的基础知识,...
本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。 ### 集合框架概述 1.1.1 容器简介 容器是Java集合框架的基础,它是一个可以存储多个对象的容器,提供了...
在文档《Java集合排序及java集合类详解.pdf》中,虽然由于OCR扫描的原因,内容存在一些文字错误和漏识别,但可以推断该文档详细讲解了Java集合类的各个接口以及实现类的特点、用法以及它们之间的区别,并且详细介绍...
`Collections.sort(List<T> list)`方法是`Collection`接口中最常用的方法之一,它用于对指定的`List`实例进行升序排序。该方法使用了快速排序算法或插入排序算法,具体取决于列表的大小。需要注意的是,只有当`List`...
* 排序(Sort):使用sort方法可以根据元素的自然顺序对指定列表按升序进行排序。 * 混排(Shuffling):使用shuffle方法可以打乱在一个List中的任何排列的踪迹。 * 反转(Reverse):使用reverse方法可以根据元素的...
5. sort 方法:对集合中的元素进行排序。 集合框架的应用场景 集合框架的应用场景非常广泛,例如: 1. 数据存储:可以使用集合框架来存储大量的数据,例如新闻信息、学员信息等。 2. 算法实现:可以使用集合框架...
Freemarker 中遍历 List 集合实例是指在 Freemarker 应用中遍历 List 集合获取需要的数据,并对需要的数据进行排序加工后呈现给用户。以下是 Freemarker 中遍历 List 集合实例的详细介绍: 一、 Freemarker 中 list...
例如,对于List,可以使用Collections.sort()方法进行排序;对于Map,可以使用TreeMap,它会自动根据键的自然排序或提供的Comparator排序。 总结来说,Java集合框架提供了丰富的数据结构和操作,适用于各种场景。...
1. 对于List,可以使用Collections.sort()方法进行排序。 2. 对于Set,如TreeSet,它会自动根据元素的Comparable或Comparator进行排序。 3. 对于Map,如TreeMap,同样依赖于键的Comparable或Comparator。 总结来说...
1. 对于实现了`Comparable`接口的元素,如Integer、String等,可以直接使用`Collections.sort()`方法对List进行排序。 2. 对于不满足自然排序的元素,可以通过自定义`Comparator`并调用`Collections.sort(list, ...
- `Collections.sort()`: 对 List 进行排序。 - `Collections.reverse()`: 反转 List 的顺序。 - `Collections.shuffle()`: 打乱 List 的顺序。 - `Collections.max()` 和 `Collections.min()`: 获取 List 中的最大...
- 对于List,可以使用Collections.sort()方法进行排序。自定义类需要实现Comparable接口或提供Comparator。 - 对于Set,如TreeSet,元素会自动排序,自定义类需实现Comparable接口。 - 对于Map,可以使用TreeMap...
在Java编程中,对List集合中的对象进行多属性排序是一项常见的任务。这通常涉及到自定义比较逻辑,以满足复杂的数据排序需求。在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在...
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: 代码如下:// Len is ...
例如,TreeSet和TreeMap默认使用自然排序,而ArrayList和HashMap则不保证排序,但在使用Collections.sort()或Arrays.sort()方法时可以实现定制排序。 理解并熟练运用Java集合框架是Java程序员必备的技能,无论是...