关闭

Collections.sort方法排序,以及java8前后版本的使用

标签: javaCollection
4475人阅读 评论(0) 收藏 举报
public class SortTest {
public static void main(String[] args) {
List<String> lists = new ArrayList<String>();
List<A> list = new ArrayList<A>();
List<B> listB = new ArrayList<B>();
lists.add("5");
lists.add("2");
lists.add("9");
//lists中的对象String本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序
Collections.sort(lists);

A aa = new A();
aa.setName("aa");
aa.setOrder(1);
A bb = new A();
bb.setName("bb");
bb.setOrder(2);
list.add(bb);
list.add(aa);
//list中的对象A要实现Comparable接口
Collections.sort(list);

B ab = new B();  
        ab.setName("ab");  
        ab.setOrder("1");  
        B ba = new B();  
        ba.setName("ba");  
        ba.setOrder("2");  
        listB.add(ba);  
        listB.add(ab);
//listB中的对象如果没有实现Comparable接口,根据Collections.sort重载方法实现
Collections.sort(listB, new Comparable<B>()) {
@Override
public int compare(B b1, B b2) {
return b1.getOrder().compareTo(b2.getOrder);
}
};
System.out.println(lists);  
        System.out.println(list);  
        System.out.println(listB);

打印的结果为:  
[2, 5, 9]  
[name is aa order is 1, name is bb order is 2]  
[name is ab order is 1, name is ba order is 2] 

}
}


class A implements Comparable<A>{  
    private String name;  
    private Integer order;  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
      
    public Integer getOrder() {  
        return order;  
    }  
    public void setOrder(Integer order) {  
        this.order = order;  
    }  
    @Override  
    public String toString() {  
        return "name is "+name+" order is "+order;  
    }  
    @Override  
    public int compareTo(A a) {  
        return this.order.compareTo(a.getOrder());  
    }      



class B{  
    private String name;  
    private String order;  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getOrder() {  
        return order;  
    }  
    public void setOrder(String order) {  
        this.order = order;  
    }  
    @Override  
    public String toString() {  
        return "name is "+name+" order is "+order;  
    }  





在java8中可以使用Lanbda表达式
Collections.sort(lists, (String a, String b)->{
return b.compareTo(a);
})
或者
Collections.sort(lists, (String a, String b) -> b.compareTo(b));
或者
Collections.sort(names, (a, b) -> b.compareTo(a));
0
0
查看评论

JAVA8-用lamda表达式和增强版Comparator进行排序

以前的排序一般对象实现Comparable或者Comparator接口,经常是通过匿名类类实现。 可以参见以前的博文 Java 中 Comparable 和 Comparator 比较 现在看看使用lamda表达式和java8中增强的Comparator接口进行排序。先定义一个简单的实体类:cl...
  • gao1440156051
  • gao1440156051
  • 2017-05-03 16:58
  • 2717

java8 Arrays.sort 与Arrays.parallelSort

java8 Arrays.sort 与Arrays.parallelSortSort方法java8中Arrays.sort()方法有很多重载方式,先来看看对byte类型的排序static void sort(byte[] a, int left, int right) { // Use co...
  • ExcellentYuXiao
  • ExcellentYuXiao
  • 2016-08-28 12:02
  • 2662

java中Collections.sort排序详解

Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。 compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数...
  • tjcyjd
  • tjcyjd
  • 2015-03-06 15:21
  • 220592

java基础—— Collections.sort的两种用法,简单明了 。

来源:http://gwh-08.iteye.com/blog/1233401 /**  * @author guwh  * @version 创建时间:2011-11-3 上午10:49:36  *...
  • janronehoo
  • janronehoo
  • 2013-04-01 14:33
  • 82112

java中使用sort()对ArrayList进行排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 举个例子: pack...
  • tuolaji8
  • tuolaji8
  • 2015-09-13 19:53
  • 11092

如何实现对ArrayList排序 sort()

总结: 使用Collections.sort()传入ArrayList,会采用默认的方式进行排序(字典序)使用Collections.sort()传入ArrayList和自己实现Commparator接口的类的对象,实现自定义排序 使用List.sort()传入自己实现Commparator接口...
  • u011299745
  • u011299745
  • 2016-09-24 22:18
  • 18891

java List 排序 Collections.sort()

用Collections.sort方法对list排序有两种方法  第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable{ privat...
  • zxy_snow
  • zxy_snow
  • 2012-02-03 17:20
  • 82734

Java的数组和list升序,降序,逆序函数Collections.sort和Arrays.sort的使用

list升序,降序,逆序 List list =new ArrayList(); //如果list是 5 7 2 6 8 1 4 1、升序: Collections.sort(list) //list: 1 2 4 5 6 7 8 2、降序: Collections.sort(list,...
  • yzwty
  • yzwty
  • 2017-02-21 16:35
  • 3364

java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序)

对 List 排序(首先年龄排序,如果年龄相同,则按名字排序)
  • qq_26676207
  • qq_26676207
  • 2017-02-07 10:45
  • 2346

原来 Java8 Stream 中的排序是插入排序

写了小程序,验证 Java8 Steam sort是如何实现 package com.pnp.tryJ8col; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import...
  • span76
  • span76
  • 2016-08-25 16:09
  • 7752
    个人资料
    • 访问:17872次
    • 积分:228
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条
    文章分类