• List排序


    今天项目中涉及到对list的排序,特记录于此:
    在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。
      你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator。如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort()。如果这个类没有实现Comparator,你也可以传递一个Comparator到方法sort()中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个Comparator到方法sort()中来进行排序。

    首先按照第一中进行排序:

    java程序如下:

    按照年龄进行排序:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Student implements Comparable {
        private int id;
        private int age;
        private String name;
        public Student(int id,int age, String name){
            this.id=id;
            this.age = age;
            this.name = name;
        }
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        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;
        }
        @Override
        public String toString() {
            return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";
        }
        
        
        public static void main(String args[]){
            List<Student> list=new ArrayList<Student>();
            for(int i=10;i>0;i--){
                list.add(new Student(i,i+10,"小莉"+i));
            }
            
            Collections.sort(list);
            for(Student s: list){
                System.out.println(s+"");
            }
        }
    
        public int compareTo(Object o) {
            if(o instanceof Student){
                Student s=(Student)o;
                if(this.age>s.age){
                    return 1;
                }
                else{
                    return 0;
                }
            }
            return -1;
        }
        
    
    }

    结果如下:

    Student [id=10, age=20, name=小莉10]
    Student [id=9, age=19, name=小莉9]
    Student [id=8, age=18, name=小莉8]
    Student [id=7, age=17, name=小莉7]
    Student [id=6, age=16, name=小莉6]
    Student [id=5, age=15, name=小莉5]
    Student [id=4, age=14, name=小莉4]
    Student [id=3, age=13, name=小莉3]
    Student [id=2, age=12, name=小莉2]
    Student [id=1, age=11, name=小莉1]

    按照第二种进行排序:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    
    public class ListSort {
      public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("92");
        list.add("68");
        list.add("168");
        list.add("242");
        list.add("317");
        list.add("105");
        // 字符串排序
        Collections.sort(list);
        System.out.println(list.toString()); // [105, 168.61, 242, 317, 68.9, 92.8]
        Collections.sort(list, new Comparator() {
          @Override
          public int compare(Object o1, Object o2) {
            return new Double((String) o1).compareTo(new Double((String) o2));
          }
        });
        System.out.println(list.toString()); // [68.9, 92.8, 105, 168.61, 242, 317]
      }
    }

    结果为:

    [105, 168, 242, 317, 68, 92]
    [68, 92, 105, 168, 242, 317]

  • 相关阅读:
    Mina、Netty、Twisted一起学(八):HTTP服务器
    Mina、Netty、Twisted一起学(七):发布/订阅(Publish/Subscribe)
    梦想还是要有的,万一实现了呢(校招季)
    我的地盘听我的
    React源码剖析系列 - 生命周期的管理艺术
    实现搜索联想
    为你的简历加分
    twobin博客样式—“蓝白之风”
    一起学习jQuery2.0.3源码—1.开篇
    this的安身之处
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4194772.html
Copyright © 2020-2023  润新知