ArrayList<String>里面装的全是字符串,不过我要特定的排序;
怎么重写他的CompareTo方法!
定义一个String类?
高手指教,在线等!
怎么重写他的CompareTo方法!
定义一个String类?
高手指教,在线等!
解决方案 »
- 小弟初学,半夜睡不着写了一个测试this的程序,有大牛能详细阐述一下this关键字在方法中引用调用该方法的对象(注:多层调用)此时this指的到底是什么?
- 问一个java 计算问题
- String带来的疑惑
- 线程??????
- 冒泡排序!
- 想替换路径中的"\"为"/" 执行一直出错path.replaceAll("\\","/");
- 如何使用Swing 实现画图功能,需要在什么容器上?
- response.sendRedirect("../update/测试.doc")正确么?
- 能解决red hat linux下jbuilder显示中文乱码的问题码?
- 字符串的快速解析
- 请教一下hashTable和hashMap的常用方法是否相同?两者之间有什么区别?
- 求openfire指导
class cmp implements Comparator<String>{ @Override
public int compare(String o1, String o2) {
return 0;
}
}
是,碰到排序都这么做。
或者让类自己实现 Coparatable,然后Collections.sort(List<T> list)。(你这个String排序,就不用这么搞了)
List<String> names=new ArrayList<String>();
List<Integer> ages=new ArrayList<Integer>();
Collections.sort(names);
Collections.sort(ages);
排序方法二
实现Comparable接口
该方法缺点就是只能对单一属性添加进行排序,而且写死在User类中
public class User implements Comparable<User>
public int compareTo(User user) {
//return this.getName().compareTo(user.getName()); //升序
return user.getName().compareTo(this.getName()); //降序
}
Collections.sort(users);排序方法三
使用比较器来进行排序,优点可以自己定义排序规则,可以对多属性进行排序
创建比较器类
public class UserComparator implements Comparator<User> {
/**
* 比较器方法
* 先按年龄排序从小到大,如果年龄一样的话按id排序
*/
@Override
public int compare(User o1, User o2) {
if(o1.getAge()>o2.getAge())
return 1;
else if(o1.getAge()==o2.getAge()){
if(o1.getId()>o2.getId())
return 1;
else if(o1.getId()==o2.getAge())
return 0;
else
return -1;
}
else
return -1;
}
} //创建比较器对象
UserComparator comp=new UserComparator();
//调用排序方法
Collections.sort(users,comp);
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;public class Test { public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
List list = new ArrayList();
list.add("abc");
list.add("dbc");
list.add("bbc");
Collections.sort(list,new Comparator() {
public int compare(Object o1, Object o2) {
String s1 = (String)o1;
String s2 = (String)o2;
return s1.compareTo(s2)>0 ? 1 :-1;
}
});
Iterator inte = list.iterator();
while(inte.hasNext()){
System.out.println(inte.next());
} }} 随手写的 希望对你有帮助