• list集合排序的两种方法


    1. 第一种方式使用 Collections  工具类中的 sort() 方法 

      顺便介绍Collections工具类的sort()方法:
        参数不同: 1 . void sort(List list),按自然排序的升序排序
             2. void sort(List list, Comparator c);定制排序,由Comparator控制排序逻辑

    
    
    
    public class Test {
        public static void main(String[] args) {
            List list1  = new ArrayList();
            list1.add("4");
            list1.add("2");
            list1.add("34");
            list1.add("43");
            list1.add("55");
            
            List list2  = new ArrayList();
            list2.add(4);
            list2.add(2);
            list2.add(34);
            list2.add(43);
            list2.add(55);
            
            
    //1.由于添加的元素具有可比较性,所以不用实现自然排序  倘若加上 list1.add(5201314); 会报 类型转换异常 ClassCastException 
            Collections.sort(list1);
            Collections.sort(list2);
            System.out.println(list1);  // [2, 34, 4, 43, 55]
            System.out.println(list2);  // [2, 4, 34, 43, 55]
    

      

    **
        注意: TMD 越挖越深,很明显上面结果不一样,因为:Integer和String  底层代码compareTo()方法不一样。
    **
    /*    Integer类的底层代码:比较的是值
            public int compareTo(Integer anotherInteger) {
                return compare(this.value, anotherInteger.value);
            }
        String类的底层代码:比较的结果我之前在String常用类中介绍过。 
            public int compareTo(String anotherString) {
            int len1 = value.length;
            int len2 = anotherString.value.length;
            int lim = Math.min(len1, len2);
            char v1[] = value;
            char v2[] = anotherString.value;
    
            int k = 0;
            while (k < lim) {
                char c1 = v1[k];
                char c2 = v2[k];
                if (c1 != c2) {
                    return c1 - c2;
                }
                k++;
            }
            return len1 - len2;
        }
    

      

    2.直接使用list.sort()方法,传入实现Comparator接口的实现类的实例, 下面 为了省事直接传入  匿名内部类 

     public static void main(String[] args) {
            List<String> list  = new ArrayList();
            list.add("4");
            list.add("2");
            list.add("34");
            list.add("43");
            list.add("55");
        
            list.sort(new Comparator<String>(){
                public int compare(String o1,String o2){
                    return o1.compareTo(o2);
                }
            });
            System.out.println(list);   //[2, 34, 4, 43, 55]
    

      

  • 相关阅读:
    第一节 49_ref_out 简单
    第一节 38函数 简单
    第二节 2面向对像简介 简单
    第一节 42字符串基础 简单
    第二节 3属性 简单
    第一节 33enum枚举 简单
    Java jdbc 数据库
    css 使IE和FIREFOX下变为手型
    JS调用PageMethods
    USB设备量产导致通用串行总线控制器显示感叹号解决办法
  • 原文地址:https://www.cnblogs.com/gshao/p/10140694.html
Copyright © 2020-2023  润新知