`

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
分享到:
评论

相关推荐

    java中文排序,数字字母汉字排序

    总结起来,实现Java中按数字、字母和汉字顺序的排序,主要步骤包括: 1. 创建自定义的`Comparator`类。 2. 使用`PinyinHelper`将中文字符转换为拼音。 3. 分类处理数字、字母和汉字,根据它们的特性进行比较。 4. ...

    java 中文姓氏 排序

    本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **Collator 类**:这是 Java 中用于文本排序和检索的标准类。`Collator` 类提供了与语言环境相关的字符串排序...

    java实现对map的字典序排序操作示例

    本示例将详细介绍如何在Java中对Map进行字典序排序,并展示了一个参照微信官网算法的实现方法。 首先,字典序排序是指根据键(key)的自然顺序或自定义比较器进行排序。对于字符串,字典序排序通常是指按字母顺序...

    listview按序排列显示

    `Collections.sort()`是Java中对List进行排序的方法,它接受一个List作为参数,并根据List中元素的自然顺序或者自定义比较器进行排序。在这个例子中,Map的键(key)通常是字符串或其他实现了Comparable接口的对象,...

    java arrays类.docx

    Java中的Arrays类是Java.util包下提供的一个工具类,它包含了一系列静态方法,方便开发者对数组进行各种操作,包括但不限于排序、搜索、比较、复制、填充等。在深入讲解Arrays类的方法之前,我们先理解一下Java数组...

    alphanum:使用 DaveKoelle.com 的 Alphanum 算法进行自然排序

    这与计算机默认的字典序排序不同。Dave Koelle在其网站DaveKoelle.com上提出了一种Alphanum算法,专门用于解决这个问题。 Alphanum算法的核心思想是将字符串拆分成数字和非数字的部分,然后对它们分别进行比较。...

    java面试问题汇总(非常全面)

    - 使用 `TreeSet` 可以自然排序或自定义排序。 - 使用 `LinkedHashSet` 可以保持插入顺序。 - 使用 `HashSet` 不保证排序。 #### 17. ArrayList和Vector的区别 - `ArrayList` 非线程安全,性能较高。 - `Vector` ...

    PseudoCode_Anagrams_

    例如,计算字符串的按字典序排序后的哈希值,如果两个字符串的哈希值相同,它们可能是字母异位词。 5. **伪代码**:PseudoCode.pdf可能包含了用伪代码描述的算法,这是一种介于自然语言和编程语言之间的表达方式,...

Global site tag (gtag.js) - Google Analytics