java對象排序,java對對象排序

本文目錄一覽:

java 如何對自定義的對象進行排序

//把排序規則交給sort方法。該方法就回按照你自定義的規則進行排序java.util.Arrays.sort(users,new MyComparator());for (int i = 0; iusers.length; i++){System.out.println (users[i]);}}}class User{String name;int age ;public User(String name,int age){this.name = name;this.age = age;}public String toString(){return name+”:::”+age;}}class MyComparator implements Comparator{public int compare(Object obj1, Object obj2 ){User u1 = (User)obj1;User u2 = (User)obj2;if(u1.ageu2.age){return 1;}else if(u1.ageu2.age){return -1;}else{//利用String自身的排序方法。//如果年齡相同就按名字進行排序

Java中對象按照屬性排序

項目中經常需要用到比如地區列表按照中文的拼音首字母排序 但是有時候獲取到的地區列表是對象的形式 有地區id 地區名稱兩個屬性 這裡主要涉及到兩個技術點

對象按屬性排序 中文按拼音首字母排序 下面給出自己整理好的demo:

import java text Collator;

import java util ArrayList;

import java util Collections;

import java util Comparator;

import mons beanutils BeanComparator;

import llections ComparatorUtils;

import parators ComparableComparator;

import parators ComparatorChain;

public class CompareTipA  {

private int  id;

private String  name;

private String age;

@SuppressWarnings( unchecked )

public static void main(String []args) {

ArrayListObject list = new ArrayListObject()

list add(new CompareTipA( 五 ))

list add(new CompareTipA( 六 ))

list add(new CompareTipA( 二 ))

list add(new CompareTipA( 四 ))

list add(new CompareTipA( 四 ))

list add(new CompareTipA( 一 ))

Comparator mycmp = ComparableComparator getInstance()

mycmp = ComparatorUtils nullLowComparator(mycmp)

//允許null

mycmp = ComparatorUtils reversedComparator(mycmp) //逆序

ArrayListObject sortFields = new ArrayListObject()

ComparatorObject parator=Collator getInstance(java util Locale CHINA)

sortFields add(new BeanComparator( name parator))   //name正序 (主)

sortFields add(new BeanComparator( id mycmp))

//id逆序  (副)

ComparatorChain multiSort = new ComparatorChain(sortFields)

Collections sort(list multiSort)

for (int i = ;ilist size() i++) {

System out println(list get(i))

//輸出   /*

[id= name=二 age= ]

[id= name=六 age= ]

[id= name=四 age= ]

[id= name=四 age= ]

[id= name=五 age= ]

[id= name=一 age= ]*/

}

}

public CompareTipA(int id String age String name) {

this id = id;

this name = name;

this age = age;

}

public int getId() {

return this id;

}

public void setId(int id) {

this id = id;

}

public String getName() {

return this name;

}

public void setName(String name) {

this name = name;

}

//

public int pareTo(Object o) {   //

return pare(this o)    //    }

public String toString() {

return [id= + this id + name= + this name + age= + this age + ] ;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this age = age;

}   }

注意 需要導入的三個包 mons beanutils jar

mons collections jar

mons logging jar

lishixinzhi/Article/program/Java/hx/201311/25790

Java中怎麼給一個對象排序

Comparable 是一個自身以前支持自比擬的(如String ,Integer) 的接口 Comparator 可以說是一個 自用的比擬器 當對象自身 不支持自排序和自比擬函數的時辰 咱們可以議決完成Compartor 來比擬兩對象的大小 Comparable 是一個比擬通用的接口 用戶可以議決他完成 排序功用 而Comparator 可以看作一種算法 一種設計方式 (可以看作是一個戰略方式 就是不改動對象自身,而用一個戰略對象改動對象行為) Comparable 相比擬較固定 與詳細類綁定 , Comparator 比擬靈敏 可以與任何須要完成功用的類 綁定 Comparable 可以說是 靜態綁定 Comparator 可以說是靜態綁定 Comparable 此接口強行對完成它的每個類的對象執行全體排序。此排序被稱為該類的自然排序,類的 compareTo 方法被稱為它的自然比擬方法。 完成此接口的對象列表(和數組)可以議決 Collections.sort(和 Arrays.sort)執行自動排序。完成此接口的對象可以用作有序映射表中的鍵或有序集合中的元素,無需指定比擬器。 關於類 C 的每一個 e1 和 e2 來說,當且僅當 (e1.compareTo((Object)e2) == 0) 與 e1.equals((Object)e2) 具有類似的布爾值時,類 C 的自然排序才叫做與 equals 一致。留意,null 不是任何類的實例,即便 e.equals(null) 前往 false,e.compareTo(null) 也會拋出 NullPointerException。 劇烈推薦(雖然不是必需的)使自然排序與 equals 一致。這是由於在運用其自然排序與 equals 不一致的元素(或鍵)時,沒有顯式比擬器的有序集合(和有序映射表)行為表現“怪異”。尤其是,這樣的有序集合(或有序映射表)違犯了依據 equals 方法定義的集合(或映射表)的慣例協議。 而Comparator 比擬函數強行對某些對象 collection 執行全體排序。可以將 Comparator 傳遞給 sort 方法(如 Collections.sort),從而准許在排序順序上完成精確控制。還可以運用 Comparator 來控制某些數據結構(如 TreeSet 或 TreeMap)的順序。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307527.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:16
下一篇 2025-01-02 18:16

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論