黑马程序员技术交流社区

标题: 来个人帮我看下比较器 [打印本页]

作者: 122125241    时间: 2015-7-11 13:50
标题: 来个人帮我看下比较器
  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;
        }
}



作者: 耀阳圣尊    时间: 2015-7-11 14:24
哥,你能不能不逗我,comparable对treeSet好使,你整个list。你要干什么?{:3_58:}
作者: 122125241    时间: 2015-7-11 14:33
耀阳圣尊 发表于 2015-7-11 14:24
哥,你能不能不逗我,comparable对treeSet好使,你整个list。你要干什么? ...

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

那ArrayList里面对象按照年龄排我改怎么办?不在User类重写方法的话  我真不知道怎么整了- -
作者: 122125241    时间: 2015-7-11 14:36
122125241 发表于 2015-7-11 14:35
那ArrayList里面对象按照年龄排我改怎么办?不在User类重写方法的话  我真不知道怎么整了- - ...

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

我这么写能满足你吗?{:3_60:}
作者: 122125241    时间: 2015-7-11 14:48
耀阳圣尊 发表于 2015-7-11 14:38
我这么写能满足你吗?

我为啥就不去想集合工具类呢:'(     中午饭不吃了我决定    又钻牛角尖了
作者: 糜芹    时间: 2015-7-11 14:55
int result = this.age - user.getAge();  你这age并没有进行比较吧..
作者: 122125241    时间: 2015-7-11 15:07
糜芹 发表于 2015-7-11 14:55
int result = this.age - user.getAge();  你这age并没有进行比较吧..

NONO不是那的问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2