<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 比較器示例 > 原文: [https://javatutorial.net/java-comparator-example](https://javatutorial.net/java-comparator-example) 在本教程中,我們將討論 Java 比較器及其示例。 ## 什么是 Java 比較器? Java `Comparator`是用于比較 Java 對象的接口。 在`java.util.comparator`包中,Java `Comparator`的`compare(Object 01, Object 02)`方法比較兩個 Java 對象。 通過使用可配置的方法,Java `Comparator`可以以正數、零或負數返回比較結果。 由于不限于檢查數字,因此可以將 Java `Comparator`用于比較任何對象。 使用`java.io.Serializable`,可以將 Java 比較器同樣用于有效地比較序列化的信息結構。 Java `Comparator`類似于`Comparable`接口,但可用于交換排序順序,其中`Comparable`可通過常規順序(如字典序)進行排序。 ## 語法 ```java public int compare(Object obj1, Object obj2) ``` 如何使用 Java 比較器? [`TreeSet`](https://javatutorial.net/java-treeset-example)和[`TreeMap`](https://javatutorial.net/java-treemap-example) 都以自然順序存儲元素。 不管怎樣,比較器明確地描述了用于排序的順序。 比較器接口具有兩種技術的特征:`compare()`和`equals()`。存在`compare()`方法,專注于請求的兩個組成部分: ## `compare`方法 int compare(Object obj1,Object obj2) `obj1`和`obj2`得到比較。 如果對象相等,則此方法返回零。 如果`obj1`比`obj2`更大,它將返回正數。 否則返回負數。 通過實現`compare()`,可以修改比較的方式。 例如,要按反向進行排序,可以使比較器反轉比較結果。 ![](https://img.kancloud.cn/48/6c/486c170286e20463a29ef2431f6c9fe6_300x225.jpg) ## `equals`方法 存在`equals()`方法,用于測試對象是否與調用比較器相符 - `boolean equals(Object obj)` `obj`是檢查是否相等的對象。 如果`obj`和被調用對象都是`Comparator`,并且使用類似的方法,則該方法返回真。 否則,它返回`false`。 廢除`equals()`是多余的,大多數直接比較器都不會這樣做。 ## Java 比較器示例 ```java import java.util.*; class Dog implements Comparator<Dog>, Comparable<Dog> { private String name; private int age; Dog() { } Dog(String n, int a) { name = n; age = a; } public String getDogName() { return name; } public int getDogAge() { return age; } // Overriding the compareTo method public int compareTo(Dog d) { return (this.name).compareTo(d.name); } // Overriding the compare method to sort the age public int compare(Dog d, Dog d1) { return d.age - d1.age; } } public class Example { public static void main(String args[]) { // Takes a list o Dog objects List<Dog> list = new ArrayList<Dog>(); list.add(new Dog("Shaggy", 3)); list.add(new Dog("Lacy", 2)); list.add(new Dog("Roger", 10)); list.add(new Dog("Tommy", 4)); list.add(new Dog("Tammy", 1)); Collections.sort(list); // Sorts the array list for(Dog a: list) // printing the sorted list of names System.out.print(a.getDogName() + ", "); // Sorts the array list using comparator Collections.sort(list, new Dog()); System.out.println(" "); for(Dog a: list) // printing the sorted list of ages System.out.print(a.getDogName() +" : "+ a.getDogAge() + ", "); } } ``` ```java OUTPUT: ``` ```java Lacy, Roger, Shaggy, Tammy, Tommy, Tammy : 1, Lacy : 2, Shaggy : 3, Tommy : 4, Roger : 10, ``` #### Java 比較器的工作示例。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Comparator; class Student { // instance member variables String Name; int Age; // parameterized constructor public Student(String Name, Integer Age) { this.Name = Name; this.Age = Age; } public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public Integer getAge() { return Age; } public void setAge(Integer Age) { this.Age = Age; } // overriding toString() method @Override public String toString() { return "Customer{" + "Name=" + Name + ", Age=" + Age + '}'; } static class CustomerSortingComparator implements Comparator<Student> { @Override public int compare(Student customer1, Student customer2) { // for comparison int NameCompare = customer1.getName().compareTo(customer2.getName()); int AgeCompare = customer1.getAge().compareTo(customer2.getAge()); // 2-level comparison using if-else block if (NameCompare == 0) { return ((AgeCompare == 0) ? NameCompare : AgeCompare); } else { return NameCompare; } } } public static void main(String[] args) { // create ArrayList to store Student List<Student> al = new ArrayList<>(); // create customer objects using constructor initialization Student obj1 = new Student("Ajay", 27); Student obj2 = new Student("Sneha", 23); Student obj3 = new Student("Simran", 37); Student obj4 = new Student("Ajay", 22); Student obj5 = new Student("Ajay", 29); Student obj6 = new Student("Sneha", 22); // add customer objects to ArrayList al.add(obj1); al.add(obj2); al.add(obj3); al.add(obj4); al.add(obj5); al.add(obj6); // before Sorting arraylist: iterate using Iterator Iterator<Student> custIterator = al.iterator(); System.out.println("Before Sorting:\n"); while (custIterator.hasNext()) { System.out.println(custIterator.next()); } // sorting using Collections.sort(al, comparator); Collections.sort(al, new CustomerSortingComparator()); // after Sorting arraylist: iterate using enhanced for-loop System.out.println("\n\nAfter Sorting:\n"); for (Student customer : al) { System.out.println(customer); } } } ``` **輸出**: ```java Unsorted 111 bbbb london 131 aaaa nyc 121 cccc jaipur Sorted by rollno 111 bbbb london 121 cccc jaipur 131 aaaa nyc Sorted by name 131 aaaa nyc 111 bbbb london 121 cccc jaipu ```
                  <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>

                              哎呀哎呀视频在线观看