日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Java比較器

瀏覽:21日期:2022-08-29 08:10:22

正文

Java中的對(duì)象正常情況下只能進(jìn)行比較 == 或者 != 不能使用 > < ,但是在實(shí)際的開發(fā)中,我們需要對(duì)多個(gè)對(duì)象進(jìn)行排序,就是需要比較對(duì)象的大小

Java實(shí)現(xiàn)對(duì)象排序的方式有兩種:

自然排序:java.lang.Comparable 定制排序:java.util.Comparator

1. Comparable 自然排序

像String、包裝類等實(shí)現(xiàn)了Comparable接口,重寫了compareTo(obj)方法,給出了比較兩個(gè)對(duì)象大小的方式。 像String、包裝類重寫compareTo()方法以后,進(jìn)行了從小到大的排列 重寫compareTo(obj)的規(guī)則:

如果當(dāng)前對(duì)象this大于形參對(duì)象obj,則返回正整數(shù)如果當(dāng)前對(duì)象this小于形參對(duì)象obj,則返回負(fù)整數(shù)如果當(dāng)前對(duì)象this等于形參對(duì)象obj,則返回零

對(duì)于自定義類來說,如果需要排序,我們可以讓自定義類實(shí)現(xiàn)Comparable接口,重寫compareTo(obj)方法。在compareTo(obj)方法中指明如何排序,默認(rèn)也是從小到大

public void test1(){ String[] arr = new String[]{'AA','BB','DD','WW','MM','PP','CC'}; Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[AA, BB, CC, DD, MM, PP, WW] }

自定義類需要重寫

package com.atguigu.java1;/** * @author MD * @create 2020-07-13 15:52 */public class Goods implements Comparable{ private String name; private double price; public Goods() { } public Goods(String name, double price) { this.name = name; this.price = price; } 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 String toString() { return 'Goods{' +'name=’' + name + ’’’ +', price=' + price +’}’; } // 指明商品比較大小的方式:按照價(jià)格的方式從小到大,再按照商品名從低到高 @Override public int compareTo(Object o) { if(o instanceof Goods){ Goods goods = (Goods)o; // 方式一 if (this.price > goods.price){return 1; }else if(this.price < goods.price){return -1; }else{//return 0;return this.name.compareTo(goods.name); } // 方式二: //return Double.compare(this.price , goods.price); } throw new RuntimeException('傳入的參數(shù)不合法'); }}// 測(cè)試public void test2(){ Goods[] arr = new Goods[4]; arr[0] = new Goods('lx',123.12); arr[1] = new Goods('xm',23.12); arr[2] = new Goods('hw',67); arr[3] = new Goods('de',99); Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[Goods{name=’xm’, price=23.12}, Goods{name=’hw’, price=67.0}, Goods{name=’de’, price=99.0}, Goods{name=’lx’, price=123.12}] }

2. Comparator 定制排序

當(dāng)元素的類型沒有實(shí)現(xiàn)java.lang.Comparable接口而又不方便修改代碼, 或者實(shí)現(xiàn)了java.lang.Comparable接口的排序規(guī)則不適合當(dāng)前的操作,那 么可以考慮使用 Comparator 的對(duì)象來排序

重寫compare(Object o1,Object o2)方法,比較o1和o2的大小:如果方法返 回正整數(shù),則表示o1大于o2;如果返回0,表示相等;返回負(fù)整數(shù),表示 o1小于o2。 可以將 Comparator 傳遞給 sort 方法(如 Collections.sort 或 Arrays.sort), 從而允許在排序順序上實(shí)現(xiàn)精確控制。 還可以使用 Comparator 來控制某些數(shù)據(jù)結(jié)構(gòu)(如有序 set或有序映射)的 順序,或者為那些沒有自然順序的對(duì)象 collection 提供排序。

// 這里沒有使用泛型,String已經(jīng)重寫了compareTo(obj)方法直接調(diào)public void test3(){ String[] arr = new String[]{'AA','BB','DD','WW','MM','PP','CC'}; // 這里使用匿名 Arrays.sort(arr, new Comparator() { // 安裝字符串從大到小 @Override public int compare(Object o1, Object o2) {if (o1 instanceof String && o2 instanceof String){ String s1 = (String)o1; String s2 = (String)o2; return -s1.compareTo(s2);}throw new RuntimeException('輸入不合法'); } }); System.out.println(Arrays.toString(arr));//[WW, PP, MM, DD, CC, BB, AA] }

默認(rèn)從小到大,可以直接再前面加符號(hào)就是從高到低

String、包裝類已經(jīng)實(shí)現(xiàn)了compare()直接調(diào)用即可

public void test4(){ Goods[] arr = new Goods[4]; arr[0] = new Goods('lx',123.1); arr[1] = new Goods('lx',23.12); arr[2] = new Goods('hw',67); arr[3] = new Goods('de',99); // 指明商品比較大小的方式,安裝產(chǎn)品的名稱從低到高排序,若名稱一樣,再安裝價(jià)格從高到底排序 Arrays.sort(arr, new Comparator<Goods>() { @Override public int compare(Goods o1, Goods o2) {if (o1.getName().equals(o2.getName())){ return -Double.compare(o1.getPrice(),o2.getPrice());}else{ return o1.getName().compareTo(o2.getName());} } }); System.out.println(Arrays.toString(arr)); //[Goods{name=’de’, price=99.0}, Goods{name=’hw’, price=67.0}, Goods{name=’lx’, price=123.1}, Goods{name=’lx’, price=23.12}] }

Comparable接口與Comparator的使用的對(duì)比:

Comparable接口的方式一旦一定,保證Comparable接口實(shí)現(xiàn)類的對(duì)象在任何位置都可以比較大小。 Comparator接口屬于臨時(shí)性的比較。

以上就是詳解Java比較器的詳細(xì)內(nèi)容,更多關(guān)于Java比較器的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品中文字幕一区二区三区av| 精品网站999| 91精品久久久久久久久久不卡| xxxxx性欧美特大| 性欧美xxxx免费岛国不卡电影| 99pao成人国产永久免费视频 | 蘑菇福利视频一区播放| 国产真实久久| 免费成人av在线播放| 日韩高清在线不卡| 日本欧美一区二区| 久久亚洲黄色| 中文字幕系列一区| 欧美日韩国产免费观看视频| 亚洲黄色影院| 久久精品xxxxx| 亚洲黄色网址| 噜噜噜躁狠狠躁狠狠精品视频| 日韩高清一级| 国产一区二区三区日韩精品| 亚洲黑丝一区二区| 免费视频最近日韩| 国产精品99久久免费观看| av资源中文在线天堂| 亚洲一区欧美激情| 国产精品一卡| 国产韩日影视精品| 日本午夜精品| 91视频精品| 狠狠爱成人网| 国产欧美日韩一区二区三区四区 | 91精品国产自产在线丝袜啪| 97精品国产| 亚洲人www| 中文字幕人成乱码在线观看| 尹人成人综合网| 欧美国产另类| 久久国产精品亚洲77777| 国产精品久久亚洲不卡| 欧美日韩在线网站| 国产乱人伦丫前精品视频| 伊伊综合在线| 日韩一区二区三区高清在线观看| 成人小电影网站| 四虎精品永久免费| 欧美日韩精品免费观看视完整| 亚洲91网站| 久久国产电影| 麻豆精品在线| 在线综合亚洲| 国产精品国产三级国产在线观看| 国产精品天堂蜜av在线播放| 亚洲电影在线| 久久精品国产99国产精品| 蜜臀国产一区二区三区在线播放| 精品免费av| 91伊人久久| 国产一区二区中文| 精品美女视频 | 欧美一级精品| 久久精品免费看| 亚洲人www| 国产精品毛片一区二区三区| 国产精品久久久久久久免费观看| 日韩中文av| 性欧美xxxx免费岛国不卡电影| 久久伊人亚洲| 欧美日韩一区二区三区不卡视频| 国产视频一区三区| 国产综合婷婷| 亚洲黄色网址| 精品午夜av| 国产精品丝袜在线播放| 亚洲ww精品| 免费成人在线视频观看| 久久精品国产大片免费观看| 精品亚洲成人| 国产欧美大片| 欧美日韩国产一区二区在线观看| 亚洲一区二区三区四区五区午夜 | 精品一区二区三区免费看| 日韩和欧美一区二区三区| 精品欧美久久| 999久久久精品国产| 神马午夜在线视频| 电影91久久久| 国际精品欧美精品| 免费在线成人| 国产精品白丝久久av网站| 91精品丝袜国产高跟在线| 无码日韩精品一区二区免费| 蜜臀久久久久久久| 三级久久三级久久久| 偷拍亚洲精品| 国产乱码精品| 久久精品日韩欧美| 国产一区二区三区久久久久久久久| 国产精品久久久久久av公交车| 国产欧美一区二区色老头| 国产美女撒尿一区二区| 欧美交a欧美精品喷水| 国产精品一区二区精品视频观看 | 日韩毛片在线| 秋霞国产精品| 在线日韩电影| 免费日韩av| 日韩欧美在线精品| 国产精品亚洲综合色区韩国| 国产精品sm| 福利一区二区| 色爱av综合网| 亚洲精品1区| 日本成人在线网站| 久久精品毛片| 国产欧洲在线| 欧美日韩精品一本二本三本 | 日韩av中文在线观看| 日韩激情一二三区| 国产精品白丝一区二区三区| 大香伊人久久精品一区二区| 91欧美在线| 激情偷拍久久| 亚洲精品激情| 国产aⅴ精品一区二区四区| 亚洲大片在线| 亚洲精品看片| 久久av免费| 欧美综合另类| 91精品尤物| 秋霞影视一区二区三区| 国产精品美女| 国产精品欧美一区二区三区不卡| 黄色aa久久| 六月丁香综合| 久久99精品久久久野外观看| 麻豆mv在线观看| 最新日韩av| 国产毛片精品| 亚洲激情中文在线| 久久国产生活片100| 久久久久国产精品一区三寸| 日韩在线一二三区| 免费一级欧美片在线观看网站 | 免费在线观看日韩欧美| 国产精品**亚洲精品| 久久精品高清| 国产欧美在线观看免费| 亲子伦视频一区二区三区| 日韩精品一二区| 91欧美在线| 日韩av字幕| 久久一区二区三区喷水| 久久国产欧美日韩精品| 国产高清久久| 国产精品magnet| 另类激情亚洲| 正在播放日韩精品| 91大神在线观看线路一区| 三上悠亚国产精品一区二区三区| 日韩av网站在线免费观看| 欧美国产91| 国产精品高清一区二区| 不卡在线一区| 高清一区二区三区| 日韩av一区二区三区四区| 极品日韩av| 韩国女主播一区二区三区| 日日夜夜免费精品视频| 亚洲五月婷婷| 激情久久一区二区| 欧美专区一区| 亚洲视频二区| 欧美日韩中文字幕一区二区三区| 欧美极品一区二区三区| 婷婷成人av| 欧美精品激情| 日本在线高清| 欧美有码在线| 亚洲理论在线| 夜夜嗨一区二区| 久久蜜桃av| 日韩一区电影| 久久精品国产久精国产| 国产亚洲高清在线观看| 亚洲精品观看| 男女男精品网站| 亚洲国产综合在线看不卡| av资源中文在线| 老色鬼精品视频在线观看播放| 日韩欧美中文字幕一区二区三区| 制服诱惑一区二区| 欧美在线资源| 日韩高清中文字幕一区二区| 麻豆精品少妇| 国产精品视频一区二区三区 | 欧美日韩国产一区精品一区| 欧洲av一区二区| 天堂а√在线最新版中文在线| 嫩草伊人久久精品少妇av杨幂| 91福利精品在线观看|