Java-Collections的sort方法对 list 进行排序

转载 2016年06月01日 09:08:34


    1.List中的对象实现Comparable接口:

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());
	    }

}
下面是测试类Test:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


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

2.使用静态内部类实现Comparator接口,Comparator接口位于java.util包下

import java.util.*;
public class Main{
public static void main(String args[]){
ArrayList al=new ArrayList();
al.add(new Student(2,"aa"));
al.add(new Student(1,"bb"));
al.add(new Student(3,"dd"));
al.add(new Student(3,"cc"));
Collections.sort(al,new StudentComparator());
Iterator it=al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
class Student {
int id;
String name;
Student(int id,String name){
this.id=id;
this.name=name;
}
public String toString(){
return "id="+this.id+",name="+this.name;
}
}
class StudentComparator implements Comparator{
public int compare(Object o1,Object o2){
Student s1=(Student)o1;
Student s2=(Student)o2;
int result=(s1.id>s2.id)?1:((s1.id==s2.id)?0:-1);
if(0==result){
result=s1.name.compareTo(s2.name);
}
return result;
}
}

3.补充:我遇到的情况是直接List<String> list=new ArrayList();

在这种情况下,我们如果调用Collections.sort(list);方法,它会对list里字符串从左往右的字母的ascii值进行排序,不用实现 Comparator 接口。

public class Connectionssort {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list = new ArrayList();
		int j=0;
		JDBManager db=new JDBManager();	
		ResultSet rs;
		String q = "select * from securityEvent";
		try {
			rs = db.executeQuery(q);
			while (rs.next()) {
				list.add(rs.getString("grade"));
			}
			Collections.sort(list);
			while (j < list.size()) {
					System.out.println(list.get(j).toString());
					j++;
				}
	}catch (Exception e) {
		// TODO: handle exception
	}
}
}
实验结果如下:

A

A

B

B

B

C

C

C

java list集合使用Collections中的sort方法进行排序(Comparator),超实用

Collections中sort方法对list集合进行排序,很实用

Java-Collections的sort方法对list进行排序

1.List中的对象实现Comparable接口: public class User implements Comparable { private String name; p...

Java中应用Collections工具类的Sort()方法对List进行排序

一、Sort排序方法的使用: 1.对Integer类型进行排序     (该类型已经实现Comparable接口) 2.对String类类型进行排序   (该类型已经实现Comparable接口) 3...

【Java核心技术】Collections.sort对list进行排序

package cn.ls.testlist; import java.util.ArrayList; import java.util.Collections; import java.util....

用Java集合中的Collections.sort方法对list排序

Collections.sort

java Collections.sort()实现List排序的默认方法和自定义方法

1.java提供的默认list排序方法 主要代码: List list = new ArrayList();list.add("刘媛媛"); list.add("王硕"); list.add(...

java Collections.sort()实现List排序的默认方法和自定义方法

感谢有奉献精神的人 转自:http://www.cnblogs.com/liuyuanyuanGOGO/p/java_collections.html 1.java提供的默认list...

JAVA中Collections.sort()实现List排序的公共方法和自定义方法

本文是受开源中国中的一篇文章启发而写(找不到连接了,所以暂时木法贴出来,一旦找到立马贴出来),个别内容参考了开源中国会员的讨论,感谢! 1.Java提供的默认list排序方法 主要代码: ...

java Collections.sort()实现List排序的默认方法和自定义方法

1.java提供的默认list排序方法 例子程序如下: package outputMml2; import java.text.Collator; import java.util.Arr...

用Java集合中的Collections.sort方法对list排序的两种方法

第一种是list中的对象实现Comparable接口,如下:  /** * 根据order对User排序 */ public class User implements Comparable { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java-Collections的sort方法对 list 进行排序
举报原因:
原因补充:

(最多只允许输入30个字)