從頭認識java-14.4 Java數組的實用功能(2)

來源:互聯網
上載者:User

從頭認識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提供的數組的實用功能。

這一章節就到這裡,謝謝。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.