频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android Java List 排序
2011-12-24 13:13:46           
收藏   我要投稿

原文章转自网上blog,但是其中代码运行后原来的list排序根本没有改变。

于是打开Comparator文档看了,发现原代码的compare函数实现的返回值有问题!

修正后运行结果正确了,代码如下:

 

@SuppressWarnings("unchecked") 
void test() { 
    ArrayList list = new ArrayList(); 
    list.add(new Person("lcl 28", 28)); 
    list.add(new Person("fx 23", 23)); 
    list.add(new Person("wqx 29", 29)); 
    list.add(new Person("qd 20", 20)); 
    list.add(new Person("xgw 69", 69)); 
    Comparator comp = new Comparator() { 
        public int compare(Object o1, Object o2) { 
            Person p1 = (Person) o1; 
            Person p2 = (Person) o2; 
            if (p1.age < p2.age) 
                return -1; 
            else if (p1.age == p2.age) 
                return 0; 
            else if (p1.age > p2.age) 
                return 1; 
            return 0; 
        } 
    }; 
    Collections.sort(list, comp); 
 
    for (int i = 0; i < list.size(); i++) { 
        Person p = (Person) list.get(i); 
        System.out.println(p.getName()); 
    } 

 
public static class Person { 
 
    private int age; 
    private String name; 
 
    public Person(String name, int age) { 
        this.age = age; 
        this.name = name; 
    } 
 
    public int getAge() { 
        return age; 
    } 
 
    public void setAge(int age) { 
        this.age = age; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
}  www.2cto.com
 @SuppressWarnings("unchecked")
 void test() {
  ArrayList list = new ArrayList();
  list.add(new Person("lcl 28", 28));
  list.add(new Person("fx 23", 23));
  list.add(new Person("wqx 29", 29));
  list.add(new Person("qd 20", 20));
  list.add(new Person("xgw 69", 69));
  Comparator comp = new Comparator() {
   public int compare(Object o1, Object o2) {
    Person p1 = (Person) o1;
    Person p2 = (Person) o2;
    if (p1.age < p2.age)
     return -1;
    else if (p1.age == p2.age)
     return 0;
    else if (p1.age > p2.age)
     return 1;
    return 0;
   }
  };
  Collections.sort(list, comp);

  for (int i = 0; i < list.size(); i++) {
   Person p = (Person) list.get(i);
   System.out.println(p.getName());
  }
 }

 public static class Person {

  private int age;
  private String name;

  public Person(String name, int age) {
   this.age = age;
   this.name = name;
  }

  public int getAge() {
   return age;
  }

  public void setAge(int age) {
   this.age = age;
  }

  public String getName() {
   return name;
  }

  public void setName(String name) {
   this.name = name;
  }
 }

 

摘自 michaelpp的专栏

点击复制链接 与好友分享!回本站首页
上一篇:Android模拟器的sdcard操作技巧整理
下一篇:Android Java生成随机数的方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站