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

您的位置:首頁技術文章
文章詳情頁

詳解Java比較器

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

正文

Java中的對象正常情況下只能進行比較 == 或者 != 不能使用 > < ,但是在實際的開發中,我們需要對多個對象進行排序,就是需要比較對象的大小

Java實現對象排序的方式有兩種:

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

1. Comparable 自然排序

像String、包裝類等實現了Comparable接口,重寫了compareTo(obj)方法,給出了比較兩個對象大小的方式。 像String、包裝類重寫compareTo()方法以后,進行了從小到大的排列 重寫compareTo(obj)的規則:

如果當前對象this大于形參對象obj,則返回正整數如果當前對象this小于形參對象obj,則返回負整數如果當前對象this等于形參對象obj,則返回零

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

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 +’}’; } // 指明商品比較大小的方式:按照價格的方式從小到大,再按照商品名從低到高 @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('傳入的參數不合法'); }}// 測試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 定制排序

當元素的類型沒有實現java.lang.Comparable接口而又不方便修改代碼, 或者實現了java.lang.Comparable接口的排序規則不適合當前的操作,那 么可以考慮使用 Comparator 的對象來排序

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

// 這里沒有使用泛型,String已經重寫了compareTo(obj)方法直接調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] }

默認從小到大,可以直接再前面加符號就是從高到低

String、包裝類已經實現了compare()直接調用即可

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); // 指明商品比較大小的方式,安裝產品的名稱從低到高排序,若名稱一樣,再安裝價格從高到底排序 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的使用的對比:

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

以上就是詳解Java比較器的詳細內容,更多關于Java比較器的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线亚洲欧美| 97精品一区| 99在线|亚洲一区二区| 99久精品视频在线观看视频| 热三久草你在线| 天堂av在线| 精品成人免费一区二区在线播放| 久久丁香四色| 高清精品久久| 激情视频网站在线播放色| 精品国产亚洲一区二区三区大结局| 欧美一区久久| 免费在线观看一区| 国产一区2区| 成年男女免费视频网站不卡| 黑森林国产精品av| 久久久成人网| 午夜久久影院| 中文日韩在线| 蜜臀久久99精品久久久画质超高清 | 青青草国产精品亚洲专区无| 亚洲va久久| 国产伦理久久久久久妇女| 欧美国产视频| 日韩欧美综合| 中国女人久久久| 五月国产精品| 久久亚洲国产精品尤物| 黑人精品一区| 日韩精品麻豆| 亚洲在线电影| 婷婷五月色综合香五月| 国产三级一区| 国产一区二区三区亚洲| 欧美sss在线视频| 奶水喷射视频一区| 日本欧美在线| 国产成人调教视频在线观看| 久久精品卡一| 中文字幕一区二区精品区| 国产精品久久久一区二区| 日韩在线看片| 蜜桃一区二区三区在线| 国产精品成人国产| 国产高潮在线| 亚洲欧美日韩精品一区二区| 亚洲一区有码| 麻豆91在线播放| 红桃视频国产一区| 欧美一区网站| 国产99精品| 欧美一级二级视频| 日韩精品麻豆| 天堂va欧美ⅴa亚洲va一国产| 麻豆精品一区二区综合av| 亚洲成av人片一区二区密柚| 99在线|亚洲一区二区| 国产乱码精品| 久久久亚洲一区| 免费美女久久99| 精品国产网站| 蜜桃视频一区二区三区在线观看| 国产精品一页| 亚洲国产成人精品女人| 久久不见久久见中文字幕免费| 欧美日韩一二三四| 国产乱子精品一区二区在线观看| 99久久精品费精品国产| 国产欧美日韩一区二区三区在线| 99久久夜色精品国产亚洲1000部 | 136国产福利精品导航网址| 日本在线视频一区二区| xxxxx性欧美特大| 性一交一乱一区二区洋洋av| 国产精品尤物| 亚洲免费网址| аⅴ资源天堂资源库在线| 中文在线日韩| 久久国产影院| 国产精品白丝av嫩草影院| 国产农村妇女精品一区二区| 国产精品**亚洲精品| 日韩午夜av在线| 成人国产精品一区二区免费麻豆| 亚洲综合小说| 欧美91视频| 精品视频91| 日韩av资源网| 欧美美女一区| 久久电影tv| 精品视频一区二区三区在线观看 | 老司机精品视频在线播放| 亚洲一区二区三区四区电影| 91av亚洲| 国产欧美久久一区二区三区| 亚洲在线电影| 99精品在线| 国产99在线| 美女久久久久久| 日韩av一级片| 亚洲一级大片| 久久一二三区| 红桃视频国产精品| 国产综合色产| 日韩精品水蜜桃| 免费一二一二在线视频| 国产 日韩 欧美 综合 一区| 国产精品a级| 国产高清亚洲| 国产欧美日韩精品一区二区免费| 亚洲精品大片| 综合国产视频| 中文字幕视频精品一区二区三区| 国产精品普通话对白| 亚洲激情欧美| 久久亚洲风情| 免费在线视频一区| 天堂va蜜桃一区二区三区| 伊人久久亚洲热| 欧美日韩中文字幕一区二区三区| 精品午夜av| 国产91欧美| 日韩av中文字幕一区二区三区| 丝瓜av网站精品一区二区 | 国产精品调教| 国产精品嫩模av在线| 亚洲精品麻豆| 欧美日韩国产免费观看| 美女网站视频一区| 国产传媒在线| 国内揄拍国内精品久久| 国产精品伦理久久久久久| 国产精品亚洲四区在线观看| 日韩国产91| 男女男精品网站| 亚洲一卡久久| 亚洲一区二区三区高清| 一本大道色婷婷在线| 久久精品国产网站| 国产欧美日本| 国产剧情在线观看一区| 日本在线一区二区三区| 日本va欧美va瓶| 国产午夜精品一区在线观看| 日本少妇精品亚洲第一区| 日韩动漫一区| 日韩国产精品久久久久久亚洲| 亚洲综合日韩| 久久国产高清| 香蕉成人久久| 视频一区在线播放| 久久亚洲精品伦理| 在线亚洲自拍| 美国三级日本三级久久99 | 日韩激情视频网站| 日韩精品国产欧美| 青青草国产成人99久久| 国产三级一区| 久久精品免费看| 韩国三级一区| 九九久久婷婷| 男人操女人的视频在线观看欧美| 99国产精品久久久久久久成人热| 一本色道精品久久一区二区三区| 国产中文一区| 免费国产亚洲视频| 日韩专区视频网站| 日韩在线a电影| 在线亚洲自拍| 亚洲精品伊人| 欧美亚洲一级| 国产精品亚洲欧美一级在线 | 成人免费网站www网站高清| 亚洲高清二区| 日韩精品一区二区三区中文| 欧美片第1页综合| 久久天堂影院| 日韩伦理一区| 欧美+日本+国产+在线a∨观看| 婷婷综合一区| 久久97视频| 亚洲福利精品| 亚洲欧洲日韩| 久久精品99久久久| 久久蜜桃资源一区二区老牛| 国产视频亚洲| 啪啪亚洲精品| 久久九九99| 久久狠狠亚洲综合| 欧美精品一线| 高潮久久久久久久久久久久久久| 石原莉奈在线亚洲二区| 国产suv精品一区二区四区视频| 欧美午夜不卡| 国产伊人久久| 欧美一级全黄| 国产农村妇女精品一二区| 日韩国产在线一| 国产99亚洲| 日韩av不卡一区二区|