- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- Java基礎之Comparable與Comparator概述
對于自定義類(lèi)進(jìn)行排序
要實(shí)現Comparable接口,重寫(xiě)compareTo() 方法,如果不重寫(xiě),像使用Arrays.sort()排序就會(huì )報錯
package com.che.lambda; import java.util.Objects; /** * @author cheyuhang on 2021/4/23 */ public class Good implements Comparable{ private String name; private Double price; public Good(String name, Double price) { this.name = name; this.price = price; } public Good() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Good good = (Good) o; return Objects.equals(name, good.name) && Objects.equals(price, good.price); } @Override public int hashCode() { return Objects.hash(name, price); } @Override public String toString() { return "Good{" + "name='" + name + '\'' + ", price=" + price + '}'; } @Override public int compareTo(Object o) { if (o instanceof Good){ //判斷傳遞參數是否屬于商品 Good good=(Good) o; if(this.price >good.price){ return 1; }else if(this.price <good.price) { return -1; }else { return 0; } } throw new RuntimeException("傳入數據類(lèi)型不一致"); } }
使用場(chǎng)景:當類(lèi)沒(méi)有實(shí)現Comparable接口或者實(shí)現了Comparable接口,但不符合我期望的排序規則時(shí)進(jìn)行使用
@Test public void test02() { Good[] arr=new Good[5]; arr[0] =new Good("zhangsan",234.0); arr[1] =new Good("lisi",2343.0); arr[2] =new Good("wangwu",2354.0); arr[3] =new Good("zhaoliu",2334.0); arr[4] =new Good("tianqi",2347.0); System.out.println(Arrays.toString(arr)); Arrays.sort(arr, new Comparator<Object>() @Override public int compare(Object o1, Object o2) { if (o1 instanceof Good && o2 instanceof Good){ Good g1=(Good) o1; Good g2=(Good) o2; return Double.compare(g1.getPrice(),g2.getPrice()); //return g1.compareTo(g2); } throw new RuntimeException("數據類(lèi)型不一致"); } }); System.out.println(Arrays.toString(arr)); }
到此這篇關(guān)于Java基礎之Comparable與Comparator詳解的文章就介紹到這了,更多相關(guān)Java Comparable與Comparator內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站