日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

常用类:Java比较器

發布時間:2024/3/12 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用类:Java比较器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用類:Java比較器

一、Comparable與Comparator接口的使用

package com.hsy.commonClass.compare;import org.junit.Test;import java.util.Arrays; import java.util.Comparator;/*** 一、說明:Java中的對象,正常情況下,只能進行比較:== 或 != 。不能使用 > 或 < 的* 但是在開發場景中,我們需要對多個對象進行排序,言外之意,就需要比較對象的大小。* 如何實現?使用兩個接口中的任何一個:Comparable 或 Comparator** 二、Comparable接口與Comparator的使用的對比:* Comparable接口的方式一旦一定,保證Comparable接口實現類的對象在任何位置都可以比較大小。* Comparator接口屬于臨時性的比較。*****thor shkstart* @create 2019 下午 4:41*/ public class CompareTest {/*Comparable接口的使用舉例: 自然排序1.像String、包裝類等實現了Comparable接口,重寫了compareTo(obj)方法,給出了比較兩個對象大小的方式。2.像String、包裝類重寫compareTo()方法以后,進行了從小到大的排列3. 重寫compareTo(obj)的規則:如果當前對象this大于形參對象obj,則返回正整數,如果當前對象this小于形參對象obj,則返回負整數,如果當前對象this等于形參對象obj,則返回零。4. 對于自定義類來說,如果需要排序,我們可以讓自定義類實現Comparable接口,重寫compareTo(obj)方法。在compareTo(obj)方法中指明如何排序*/@Testpublic void test1(){String[] arr = new String[]{"AA","CC","KK","MM","GG","JJ","DD"};//Arrays.sort(arr);System.out.println(Arrays.toString(arr));}@Testpublic void test2(){Goods[] arr = new Goods[5];arr[0] = new Goods("lenovoMouse",34);arr[1] = new Goods("dellMouse",43);arr[2] = new Goods("xiaomiMouse",12);arr[3] = new Goods("huaweiMouse",65);arr[4] = new Goods("microsoftMouse",43);Arrays.sort(arr);System.out.println(Arrays.toString(arr));}/*Comparator接口的使用:定制排序1.背景:當元素的類型沒有實現java.lang.Comparable接口而又不方便修改代碼,或者實現了java.lang.Comparable接口的排序規則不適合當前的操作,那么可以考慮使用 Comparator 的對象來排序2.重寫compare(Object o1,Object o2)方法,比較o1和o2的大小:如果方法返回正整數,則表示o1大于o2;如果返回0,表示相等;返回負整數,表示o1小于o2。*/@Testpublic void test3(){String[] arr = new String[]{"AA","CC","KK","MM","GG","JJ","DD"};Arrays.sort(arr,new Comparator(){//按照字符串從大到小的順序排列@Overridepublic 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);} // return 0;throw new RuntimeException("輸入的數據類型不一致");}});System.out.println(Arrays.toString(arr));}@Testpublic void test4(){Goods[] arr = new Goods[6];arr[0] = new Goods("lenovoMouse",34);arr[1] = new Goods("dellMouse",43);arr[2] = new Goods("xiaomiMouse",12);arr[3] = new Goods("huaweiMouse",65);arr[4] = new Goods("huaweiMouse",224);arr[5] = new Goods("microsoftMouse",43);Arrays.sort(arr, new Comparator() {//指明商品比較大小的方式:按照產品名稱從低到高排序,再按照價格從高到低排序@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof Goods && o2 instanceof Goods){Goods g1 = (Goods)o1;Goods g2 = (Goods)o2;if(g1.getName().equals(g2.getName())){return -Double.compare(g1.getPrice(),g2.getPrice());}else{return g1.getName().compareTo(g2.getName());}}throw new RuntimeException("輸入的數據類型不一致");}});System.out.println(Arrays.toString(arr));}}

總結

以上是生活随笔為你收集整理的常用类:Java比较器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。