1. 程式人生 > >Java 比較方法彙總 ---- Comparable

Java 比較方法彙總 ---- Comparable

Java 比較方法彙總

一、 排序介面

1、 類中實現介面Comparable, 呼叫compareTo方法: 如果 返回值大於0,則將大的數放後面;如果返回值等於0,則不做任何處理; 如果返回值小於0, 則將小的數放前面。也就是說 java預設的排序方式是升序排序

package com.m;

import java.io.Serializable;
import java.util.Collections;

public class MyTestClass implements Comparable<MyTestClass>, Serializable {

    /**
     * 
     */
private static final long serialVersionUID = 1L; private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public static long getSerialversionuid() { return serialVersionUID; } /** * 返回值為正數,表明this中的id大於myTestClass中的id, 排序時將大的數移至後面 * 返回值為0,表明this中的id等於myTestClass中的id * 返回值為負數,表明this中的id小於myTestClass中的id */
@Override public int compareTo(MyTestClass myTestClass) { if (myTestClass == null) return -1; if (this.id == null) return 1; if (myTestClass.getId() == null) return -1; return this.getId().compareTo(myTestClass.getId()); } }

二 、 List排序方法
1、 呼叫 Collections.sort(): 實質是呼叫Arrays.sort

2、 呼叫 Arrays.sort()

三、 Map排序方法
1、 按照key排序

/**
     * 使用 Map按key進行排序
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByKey(Map<String, String> map) {
        if (map == null || map.isEmpty()) {
            return null;
        }

        Map<String, String> sortMap = new TreeMap<String, String>(
                new MapKeyComparator());

        sortMap.putAll(map);

        return sortMap;
    }
//比較器類
class MapKeyComparator implements Comparator<String>{

    @Override
    public int compare(String str1, String str2) {

        return str1.compareTo(str2);
    }
}

2、 按照value排序

 /**
     * 使用 Map按value進行排序
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
        if (oriMap == null || oriMap.isEmpty()) {
            return null;
        }
        Map<String, String> sortedMap = new LinkedHashMap<String, String>();
        List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
                oriMap.entrySet());
        Collections.sort(entryList, new MapValueComparator());

        Iterator<Map.Entry<String, String>> iter = entryList.iterator();
        Map.Entry<String, String> tmpEntry = null;
        while (iter.hasNext()) {
            tmpEntry = iter.next();
            sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
        }
        return sortedMap;
    }
//比較器類
class MapValueComparator implements Comparator<Map.Entry<String, String>> {

    @Override
    public int compare(Entry<String, String> me1, Entry<String, String> me2) {

        return me1.getValue().compareTo(me2.getValue());
    }
}

參考1
參考2

相關推薦

Java 比較方法彙總 ---- Comparable

Java 比較方法彙總 一、 排序介面 1、 類中實現介面Comparable, 呼叫compareTo方法: 如果 返回值大於0,則將大的數放後面;如果返回值等於0,則不做任何處理; 如果返回值小於0, 則將小的數放前面。也就是說 java預設的排序方式是

Java中類的比較與排序方法(應用Comparable介面與Comparator介面)

引言 在平時寫Java的程式的時候,如果要進行一些基本型別的變數的比較,可以很方便得呼叫’Math.max()’、Math.min()等方法,如果要對陣列或者列表進行排序,也可以用Arrays.sort()和Collections.sort()等已經封裝好的方法來進行。但是,如果是一個自

java中求素數的幾種方法彙總比較

首先來看兩道題目: 1. 請實現一個函式,對於給定的整型引數 N,該函式能夠把自然數中,小於 N 的質數,從小到大打印出來。比如,當 N = 10,則打印出:2 3 5 7**重點內容** 2. 請

Java排序方法--List,數組,【自定義】繼承Comparable和Comparator

pri locale student ide abcdefg 接口 com main object (一)list和數組 ①List默認排序代碼: public static void main(String[] args) { List<String>

Java中字串比較方法equals()和equalsIgnoreCase()的區別

1. equals() equals( )是比較兩個字串是否相等,它的一般表示式如下: /** * Compares this string to the specified object. The result is {@code * true} if and o

JAVA——特殊類(1)——String類(3)——字串比較(方法

(二)字串比較 (1)比較字串是否相等——區分大小寫——返回值為Boolean型 public boolean equals(Object anObject) //anObject——傳入需要被比較的物件 //此方法區分大小寫 (2)比較字串是否相

java Collection集合刪除某一元素方法彙總

無論在自己寫程式玩還是實際專案應用中,操作java.util.Collection結合都是最常用的,而且也是最重要的知識點。從集合中刪除某一元素同樣是很常用的操作。對了,面試中也總考察,面試官說要考察你的實際程式設計的能力,誰知道呢。下面總結了從集合中刪除某一元素的幾種方法

Java中效能優化方法彙總

很多同學在日常寫Java的時候很少去關心效能問題,但是在我們寫程式碼的過程中必須考慮到效能對程式的影響。小到我們使用位運算來實現算術運算,大到我們對 Java 程式碼的總體架構設計,效能其實離我們很近。本文介紹了Java中效能優化的35種方法,需要的朋友可以參考

JAVA中處理大數方法彙總

     在用C或者C++處理大數時感覺非常麻煩,但是在JAVA中有兩個類BigInteger和BigDecimal分別表示大整數類和大浮點數類,至於兩個類的物件能表示最大範圍不清楚,理論上能夠表示無

JAVA學習】java中==、equals()、hashCode()都和物件的比較有關,在java中這三者各有什麼用處呢,即java中為什麼需要設計這三種物件的比較方法呢?

關於hashCode() 為什麼會設計hashCode()方法?    hashCode()方法返回的就是一個數值,我們稱之為hashCode吧。從方法的名稱上就可以看出,其目的是生成一個hash碼。hash碼的主要用途就是在對物件進行雜湊的時候作為key輸入,據此很容易推斷出,我們需要每個物件的ha

java物件的4種比較方法

概述 在java中,存在4種物件(含基礎資料型別)的比較方式:==、equals、compareTo和compare。以及兩種比較策略:引用比較和值比較。具體如下表所示。 比較 基本資料型別 物件 ==、!= 值比較 引用

Java常用類庫--Arrays、比較器(comparable、Comparator)

1、Arrays類 Arrays表示陣列的操作類,直接定義在java.util包中 import java.util.* ; public class ArraysDemo{ public st

幾種任務排程的 Java 實現方法比較

簡介:  綜觀目前的 Web 應用,多數應用都具備任務排程的功能。本文由淺入深介紹了幾種任務排程的 Java 實現方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,並對其優缺點進行比較,目的在於給需要開發任務排程的程式設計師提供

Java中正則表示式常用方法彙總

眾所周知,在程式開發中,難免會遇到需要匹配、查詢、替換、判斷字串的情況發生,而這些情況有時又比較複雜,如果用純編碼方式解決,往往會浪費程式設計師的時間及精力。因此,學習及使用正則表示式,便成了解決這一矛盾的主要手段。 大 家都知道,正則表示式是一種可以用於模式匹配和替換的規

JAVA比較日期前後的方法

在java中要比較日期的前後 程式碼如下 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); S

Java比較兩個時間大小方法記錄

@GetMapping("/compare/time/{start}/{end}") public static Integer compareTime(@PathVariable String start, @PathVariable String end) throws

Java靜態方法 與 非靜態方法(實例方法)的區別

外部類 允許 靜態成員 靜態 成員 訪問 靜態成員變量 ava 實例方法 靜態方法與實例方法的異同   1.在外部類 調用靜態方法時,有兩種方式:(1)類名.靜態方法()(2)類的對象.靜態方法() ;也就是說調用靜態方法時可以不用創建對象。      調用實例

Java Split()方法按點(.)切分註意細節

absolut int abs println clip nts image content con 按點(.)切分,必須要註意轉義!如:split("\\.")。 例子: [java] view plain copy print? public clas

java static 方法與普通方法區別

對象 static 方法區 修改 需要 總結 資源 其他 一個  static 方法不需要實例化,靜態方法在JVM剛加載的時候就編譯過了.在程序的運行過程中隨時可以調用,不需要去實例化某個對象然後再去調用,可以直接用類名去調用,直到結束釋放內存,且靜態方法只能調用類靜態變量

JAVA 比較兩張圖片的相似度的代碼

awt ace ktr ngs gin min amp exce value 原文:http://www.open-open.com/code/view/1448334323079 import java.awt.image.BufferedImage; import