ArrayList<String> 排序 ArrayList<String>里面装的全是字符串,不过我要特定的排序;怎么重写他的CompareTo方法!定义一个String类?高手指教,在线等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Collections.sort(List<T> list, Comparator<? super T> c) 然后你再自己定义一个Comparator class cmp implements Comparator<String>{ @Override public int compare(String o1, String o2) { return 0; } } 是,碰到排序都这么做。或者让类自己实现 Coparatable,然后Collections.sort(List<T> list)。(你这个String排序,就不用这么搞了) 给你看下我整理的List排序方法List排序排序方法一(直接排序) 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.ArrayList;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());} }} 随手写的 希望对你有帮助 这个程序总是说 找不到符号。 DOM中,怎么在TextNode里面插入Element? 一个类里面的定义对象可以是接口吗? 这有什么用? 遇到一个关于类加载的问题 用Eclipse怎么看到APPLET? 关于字符串加密的疑问 这样的select语句写得出吗? jdk1.4 与1.3.1比起来是不是有bug.. WebSphere Studio和WebSphere Studio Application Developer有什么区别,那位说说 java多线程同步问题,同步輸出数字 请教一下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());
} }} 随手写的 希望对你有帮助