`

java sort 排序中的自然序排序总结

    博客分类:
  • java
阅读更多

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 java 使用sort进行排序是非常容易的,可以支持默认自然循序排序和指定排序。

指定排序有两种方式

1、



 这个是list里面的类要继承Comparable 然后在里面实现public int compareTo(T o);就行

2 、

 是在方法里面用比较器来实现

 

java8里面会更简单的方式来使用

java8中添加了stream的概念

1、sorted() 默认使用自然序排序, 其中的元素必须实现Comparable 接口 
2、sorted(Comparator<? super T> comparator) :我们可以使用lambada 来创建一个Comparator 实例。可以按照升序或着降序来排序元素。 

使用起来会非常方便

 

 

public class Test {
    public static void main(String[] args) {
        List<TestClass> testClassList=new ArrayList<>();
        TestClass testClass=new TestClass();
        testClass.setDefualt(true);
        testClass.setName("name");
        testClassList.add(testClass);

        TestClass testClass1=new TestClass();
        testClass1.setDefualt(false);
        testClass1.setName("name1");
        testClassList.add(testClass1);


        TestClass testClass2=new TestClass();
        testClass2.setDefualt(true);
        testClass2.setName("name2");
        testClassList.add(testClass2);

        System.out.println(testClassList);
        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");


        List<TestClass> testClassList1=testClassList.stream().sorted(Comparator.comparing(TestClass::getDefualt).reversed()).collect(Collectors.toList());
        System.out.println(testClassList1);


    }
    static class TestClass{
        private String name;
        private Boolean isDefualt;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Boolean getDefualt() {
            return isDefualt;
        }

        public void setDefualt(Boolean defualt) {
            isDefualt = defualt;
        }

        @Override
        public String toString() {
            return "TestClass{" +
                    "name='" + name + '\'' +
                    ", isDefualt=" + isDefualt +
                    '}';
        }
    }
}
 

 

上面不管是java8或者非java8的,都提到了自然序排序(有小到大)那到底怎么来java里的自然序排序是啥呢,其实是非常简单的,因为所有的排序都要有排序因子,而具体的排序算法都是通过public interface Comparable<T> 这个接口里的public int compareTo(T o)来做的



 这样我们就能看java提供的
八种基本类型都是怎么排序的了。

例如咱们看Boolean型的



看他的比较方法,就能看出来是true是大于false的

 

其他的也是类似的查看方法

  • 大小: 20.3 KB
  • 大小: 22.8 KB
  • 大小: 14.5 KB
  • 大小: 33.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics