关于Collections.sort
来源:互联网 发布:黑暗之魂3深渊知乎 编辑:程序博客网 时间:2024/05/21 06:13
http://blog.sina.com.cn/s/blog_3c62c21f0100citz.html
关于Collections.sort
关于Collections.sort(List list,Comparator comparator) 的说明
Comparator是个接口,主要比的是两个对象,比较规则是你自己写的
,可以重写他的compare()和equals()这两个方法,也就是说比较的方法,如果是null的话,就是使用元素的自然顺序,如1,2,4,5,9,8,7,就是1,2,4,5,7,8,9这样,字母也可以
compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数
例:
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class User {
String name;
String age;
public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class ComparatorUser implements Comparator{
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;
//首先比较年龄,如果年龄相同,则比较名字
int flag=user0.getAge().compareTo(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}
}
public class SortTest {
public static void main(String[] args){
List userlist=new ArrayList();
userlist.add(new User("dd","4"));
userlist.add(new User("aa","1"));
userlist.add(new User("ee","5"));
userlist.add(new User("bb","2"));
userlist.add(new User("ff","5"));
userlist.add(new User("cc","3"));
userlist.add(new User("gg","6"));
ComparatorUser comparator=new ComparatorUser();
Collections.sort(userlist, comparator);
for (int i=0;i<userlist.size();i++){
User user_temp=(User)userlist.get(i);
System.out.println(user_temp.getAge()+","+user_temp.getName());
}
}
}
//首先比较年龄,如果年龄相同,则比较名字
结果:
1, aa
2, bb
3, cc
4, dd
5, ee
5, ff
6, gg
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Collections
1. public static <T extends Comparable<? super T>> void sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序。
列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的
(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。
public interface Comparable<T>{
int compareTo(T o)
}
实现了Comparable接口的类
数字: BigDecimal, BigInteger, Double, Integer, Short, Float, Long,
字符: Character, String,
日期: Date, Date, Time, Timestamp, Calendar,
其他: Boolean, Byte, Enum, File, Proxy.Type,
2. public static <T> void sort(List<T> list, Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须是使用指定比较器可相互比较的
(也就是说,对于列表中的任何 e1 和 e2 元素,c.compare(e1, e2) 不得抛出 ClassCastException)。
public interface Comparator<T>{
int compare(T o1, T o2)
boolean equals(Object obj) //实现此接口的类不实现equals方法也不会抛错,原因在于默认继承根类Object的equals方法
}
3. public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
使用二进制搜索算法来搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序 对列表进行升序排序(通过上面的 sort(List) 方法)。如果没有对列表进行排序,则结果是不明确的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
4. public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
使用二进制搜索算法来搜索指定列表,以获得指定对象。在进行此调用之前,必须根据指定的比较器(通过上面的 Sort(List, Comparator) 方法)对列表进行升序排序。如果没有对列表进行排序,则结果是不明确的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
5. public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
6. public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
- 关于Collections.sort
- 关于collections.sort()方法的应用
- Collections.sort
- Collections sort
- Collections.sort
- Collections-sort
- Collections.sort
- Collections.sort
- Arrays.sort()、Collections.sort()
- 集合(Collections-sort)-(Collections-max)-(Collections-binarySearch)
- Collections.sort();和Arrays.sort()
- Collections.sort()排序使用方法
- Collections.sort()排序使用方法
- Collections.sort 排序
- Collections sort 排序
- Collections.sort() 排序
- Collections静态方法sort
- 实现Collections.sort方法
- 读书笔记-赢在用户[2]:如何创建人物角色
- 禁用页面缓存的五种方法
- Struts1.1与webwork2的比较
- .net中的常用操作类
- WORD & BYTE & 进制转换
- 关于Collections.sort
- Windows Phone 7 SDK 发布
- 几种值得用心体会的经典人生观
- 什么是委托
- 无法链接lex库
- managed, unmanaged
- erp系统介绍
- 一 道C语言试题的探讨
- .net中XML文件作为数据源的操作类