從頭認識java-14.4 Java數組的實用功能(2)
接著上一章節,我們繼續介紹Java提供的數組的實用功能。
3.元素的對比Comparator
package com.ray.ch14;import java.util.Arrays;import java.util.Comparator;public class Test {public static void main(String[] args) {MyClass[] myClasses = new MyClass[3];MyClass myClass1 = new MyClass();MyClass myClass2 = new MyClass();MyClass myClass3 = new MyClass();myClass1.setId(3);myClass2.setId(2);myClass3.setId(1);myClass1.setName("myClass1");myClass2.setName("myClass2");myClass3.setName("myClass3");myClasses[0] = myClass1;myClasses[1] = myClass2;myClasses[2] = myClass3;Arrays.sort(myClasses, new MyComparator());System.out.println(Arrays.toString(myClasses));}}class MyComparator implements Comparator {@Overridepublic int compare(MyClass myClass1, MyClass myClass2) {return myClass1.getId() > myClass2.getId() ? 1 : 0;}}class MyClass {private int id = 0;private String name = "";public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "id:" + id + "&name:" + name;}}
輸出:
[id:1&name:myClass3, id:2&name:myClass2, id:3&name:myClass1]
要使用Comparator,就必須實現Comparator介面,主要就是compare方法的實現,這樣就可以自訂類的對比,我們上面採用的是id 的對比,id較小的排前面,大的排後面。
4.數組的排序Arrays.sort
介面上面的例子,我們繼續擴充,主要是通過Array.sort來對數組排序,上面的例子也有說明。
5.在有序數組中尋找。
我們修改一下上面的例子:
package com.ray.ch14;import java.util.Arrays;import java.util.Comparator;public class Test {public static void main(String[] args) {MyClass[] myClasses = new MyClass[3];MyClass myClass1 = new MyClass();MyClass myClass2 = new MyClass();MyClass myClass3 = new MyClass();myClass1.setId(3);myClass2.setId(2);myClass3.setId(1);myClass1.setName("myClass1");myClass2.setName("myClass2");myClass3.setName("myClass3");myClasses[0] = myClass1;myClasses[1] = myClass2;myClasses[2] = myClass3;Arrays.sort(myClasses, new MyComparator());System.out.println(Arrays.toString(myClasses));System.out.println("myClass2's pos:"+ Arrays.binarySearch(myClasses, myClass2, new MyComparator()));}}class MyComparator implements Comparator {@Overridepublic int compare(MyClass myClass1, MyClass myClass2) {return myClass1.getId() > myClass2.getId() ? 1 : 0;}}class MyClass {private int id = 0;private String name = "";public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "id:" + id + "&name:" + name;}}
輸出:
[id:1&name:myClass3, id:2&name:myClass2, id:3&name:myClass1]
myClass2's pos:1
我們在裡面加入了binarySearch這個二分法尋找演算法,用它來尋找myClass2這個對象在數組裡面的位置。
注意:binarySearch對於有序序列的尋找是沒問題的,但是對於無序序列的尋找,就會出現莫名其妙的問題(主要是位置的錯誤)。
總結:這一章節我們主要介紹了Java提供的數組的實用功能。
這一章節就到這裡,謝謝。