A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 122125241 中级黑马   /  2015-7-11 13:50  /  645 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <div class="blockcode"><blockquote>//为什么运行后结果一直是按照添加顺序走,而没有按照我的比较器顺序排??
  2. import java.util.ArrayList;
  3. import java.util.Iterator;

  4. public class UserTest {

  5.         /**
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {
  9.                 ArrayList<User> list = new ArrayList<>();
  10.                 list.add(new User("张三", 12));
  11.                 list.add(new User("李四", 14));
  12.                 list.add(new User("王五", 13));
  13.                
  14.                 Iterator<User> iterator = list.iterator();
  15.                 while (iterator.hasNext()) {
  16.                         User user = (User) iterator.next();
  17.                         System.err.println(user);
  18.                 }
  19.                 System.out.println(list);
  20.         }

  21. }
复制代码


public class User implements Comparable<Object> {
        private String name;
        private int age;

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

        public User() {
                super();
        }

        public String getName() {
                return name;
        }

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

        public int getAge() {
                return age;
        }

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

        @Override
        public String toString() {
                return "User [name=" + name + ", age=" + age + "]";
        }

        @Override
        public int compareTo(Object o) {
                User user  = (User)o;
                int result = this.age - user.getAge();
                if (result == 0) {
                        result = this.name.compareTo(user.getName());
                }
                return result;
        }
}


9 个回复

倒序浏览
哥,你能不能不逗我,comparable对treeSet好使,你整个list。你要干什么?{:3_58:}
回复 使用道具 举报
耀阳圣尊 发表于 2015-7-11 14:24
哥,你能不能不逗我,comparable对treeSet好使,你整个list。你要干什么? ...

其实我也很纳闷的,我在阳哥笔记那看到个题目,是arrayList<User>按年龄排序,我当时就想着list添加顺序问题,  何况ArrayList没有传入比较器的构造,我想只能类本身写入一个比较器,可是List特点,不知道那个题是怎么整的,难道不是比较器我想多了么   圣尊- -
回复 使用道具 举报
122125241 发表于 2015-7-11 14:33
其实我也很纳闷的,我在阳哥笔记那看到个题目,是arrayList按年龄排序,我当时就想着list添加顺序问题,  何 ...

那ArrayList里面对象按照年龄排我改怎么办?不在User类重写方法的话  我真不知道怎么整了- -
回复 使用道具 举报
122125241 发表于 2015-7-11 14:35
那ArrayList里面对象按照年龄排我改怎么办?不在User类重写方法的话  我真不知道怎么整了- - ...

要是treemap或者treeset  传入对象比较我就不想了,可是来个List比较
回复 使用道具 举报
122125241 发表于 2015-7-11 14:35
那ArrayList里面对象按照年龄排我改怎么办?不在User类重写方法的话  我真不知道怎么整了- - ...
  1.                  Collections.sort(list);
  2.                  System.out.println(list);
复制代码

我这么写能满足你吗?{:3_60:}
回复 使用道具 举报
耀阳圣尊 发表于 2015-7-11 14:38
我这么写能满足你吗?

我为啥就不去想集合工具类呢:'(     中午饭不吃了我决定    又钻牛角尖了

点评

一时疏忽,该吃吃O(∩_∩)O~  发表于 2015-7-11 15:04
回复 使用道具 举报
糜芹 中级黑马 2015-7-11 14:55:07
8#
int result = this.age - user.getAge();  你这age并没有进行比较吧..
回复 使用道具 举报
糜芹 发表于 2015-7-11 14:55
int result = this.age - user.getAge();  你这age并没有进行比较吧..

NONO不是那的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马