码迷,mamicode.com
首页 > 编程语言 > 详细

list集合排序的两种方法

时间:2018-12-18 23:19:06      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:类型转换   highlight   str   col   mil   结果   方式   class   public   

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]

  

 

list集合排序的两种方法

标签:类型转换   highlight   str   col   mil   结果   方式   class   public   

原文地址:https://www.cnblogs.com/gshao/p/10140694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!