常用类:Java比较器
生活随笔
收集整理的這篇文章主要介紹了
常用类: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比较器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python情人节之玫瑰花与表白方式
- 下一篇: PLC学习笔记(三):PLC结构(2)