<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java `Comparable`接口示例 > 原文: [https://howtodoinjava.com/java/collections/java-comparable-interface/](https://howtodoinjava.com/java/collections/java-comparable-interface/) Java `Comparable`接口,用于根據對象的**自然順序**對對象的[數組](https://howtodoinjava.com/java-array/)或[列表](https://howtodoinjava.com/java-arraylist/)進行排序。 元素的自然排序是通過在對象中實現`compareTo()`方法來實現的。 ## 1\. Java `Comparable`接口 ```java public interface Comparable<T> { public int compareTo(T o); } ``` Java `Comparable`接口對實現它的每個類的對象強加了總體排序。 此排序稱為類的**自然排序**,而該類的`compareTo()`方法也稱為其自然比較方法。 使用`Comparable`接口,我們可以對以下元素進行排序: 1. 字符串對象 2. 包裝器類對象,例如`Integer`,`Long`等 3. 用戶定義的自定義對象 #### 1.1 `compareTo()`方法 對于任何支持自然排序的類,它都應實現`Comparable`接口并覆蓋其`compareTo()`方法。 它必須返回負整數,零或正整數,因為此對象小于,等于或大于指定的對象。 請注意,如果`y.compareTo(x)`引發異常,則方法必須引發異常。 關系也必須是**可傳遞**,即(`x.compareTo(y) > 0 && y.compareTo(z) > 0`)表示`x.compareTo(z)> 0`。 例如,對于`Employee`類,自然排序可以基于其員工`id`。 ```java import java.time.LocalDate; public class Employee implements Comparable<Employee> { private Long id; private String name; private LocalDate dob; @Override public int compareTo(Employee o) { return this.getId().compareTo( o.getId() ); } } ``` 所有包裝器類和`String`類都實現`Comparable`接口。 [包裝器類](https://howtodoinjava.com/java/basics/java-wrapper-classes/)通過它們的值進行比較,字符串在字典上進行比較。 #### 1.2 `Collections.sort()`和`Arrays.sort()` 1. 使用`Collections.sort()`方法對對象的**列表**進行排序。 2. 使用`Arrays.sort()`方法對對象的**數組**進行排序。 #### 1.3 `Collections.reverseOrder()` 此工具方法返回一個`Comparator`,它在實現`Comparable`接口的對象集合上強加*自然順序*的逆序。 這為排序(或維護)以**反自然順序**實現`Comparable`接口的對象的集合(或數組)提供了一個簡單的習慣用法。 ## 2\. Java `Comparable`示例 所有給定的示例都使用`Collections.sort()`方法對列表進行排序。 如果我們需要對相同對象的數組進行排序,只需將 `Collections.sort()`替換為`Arrays.sort()`。 #### 2.1 排序字符串列表 Java 程序使用`Comparable`接口對字符串列表進行排序。 ```java ArrayList<String> list = new ArrayList<>(); list.add("E"); list.add("A"); list.add("C"); list.add("B"); list.add("D"); Collections.sort(list); System.out.println(list); ``` 程序輸出。 ```java [A, B, C, D, E] ``` #### 2.2 以相反的順序對字符串列表進行排序 Java 程序使用`Comparable`接口對字符串列表進行排序。 ```java ArrayList<String> list = new ArrayList<>(); list.add("E"); list.add("A"); list.add("C"); list.add("B"); list.add("D"); //Sort in reverse natural order Collections.sort(list, Collections.reverseOrder()); System.out.println(list); ``` 程序輸出: ```java [E, D, C, B, A] ``` #### 2.3 排序整數列表 Java 程序使用`Comparable`接口對整數列表進行排序。 ```java ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(300); list.add(45); list.add(2); list.add(5); //Natural order Collections.sort(list); System.out.println(list); //Sort in reverse natural order Collections.sort(list, Collections.reverseOrder()); System.out.println(list); ``` 程序輸出: ```java [2, 5, 10, 45, 300] [300, 45, 10, 5, 2] ``` #### 2.4 排序員工名單 Java 程序使用`Comparable`接口對自定義對象列表進行排序。 在此示例中,我們將**按 ID** 排序員工列表。 ```java ArrayList<Employee> list = new ArrayList<>(); list.add(new Employee(22l, "Lokesh", LocalDate.now())); list.add(new Employee(18l, "Alex", LocalDate.now())); list.add(new Employee(30l, "Bob", LocalDate.now())); list.add(new Employee(600l, "Charles", LocalDate.now())); list.add(new Employee(5l, "David", LocalDate.now())); //Natural order Collections.sort(list); System.out.println(list); //Sort in reverse natural order Collections.sort(list, Collections.reverseOrder()); System.out.println(list); ``` 程序輸出: ```java [ Employee [id=5, name=David, dob=2018-10-29], Employee [id=18, name=Alex, dob=2018-10-29], Employee [id=22, name=Lokesh, dob=2018-10-29], Employee [id=30, name=Bob, dob=2018-10-29], Employee [id=600, name=Charles, dob=2018-10-29] ] //Reverse sorted [ Employee [id=600, name=Charles, dob=2018-10-30], Employee [id=30, name=Bob, dob=2018-10-30], Employee [id=22, name=Lokesh, dob=2018-10-30], Employee [id=18, name=Alex, dob=2018-10-30], Employee [id=5, name=David, dob=2018-10-30] ] ``` ## 3\. 總結 在本教程中,我們學習了 Java 集合框架的`Comparable`接口。 它有助于通過簡單的接口實現對對象施加自然順序。 我們學習了對字符串列表,字符串數組,整數列表,整數數組進行排序,并學習了如何使用可比性對 Java 中的員工對象進行排序。 將我的問題放在評論部分。 學習愉快! 參考文獻: [`Comparable`接口 Java 文檔](https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看