最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java TreeMap排序算法實(shí)例

 更新時(shí)間:2017年07月07日 08:59:07   作者:johennes  
這篇文章主要介紹了Java TreeMap排序算法,結(jié)合實(shí)例形式分析了TreeMap排序算法的原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java TreeMap排序算法。分享給大家供大家參考,具體如下:

TreeMap 和 HashMap 用法大致相同,但實(shí)際需求中,我們需要把一些數(shù)據(jù)進(jìn)行排序;

以前在項(xiàng)目中,從數(shù)據(jù)庫(kù)查詢出來(lái)的數(shù)據(jù)放在List中,順序都還是對(duì)的,但放在HashMap中,順序就完全亂了。

為了處理排序的問(wèn)題:

1. 對(duì)于一些簡(jiǎn)單的排序,如:數(shù)字,英文字母等

TreeMap hm = new TreeMap<String, String>(new Comparator() {
    public int compare(Object o1, Object o2) {
       //如果有空值,直接返回0
       if (o1 == null || o2 == null)
         return 0;
       return String.valueOf(o1).compareTo(String.valueOf(o2));
    }
});

備注:

compareTo(String str) :是String 提供的一個(gè)方法,如果參數(shù)字符串等于此字符串,則返回 0 值;如果按字典順序此字符串小于字符串參數(shù),則返回一個(gè)小于 0 的值;如果按字典順序此字符串大于字符串參數(shù),則返回一個(gè)大于 0 的值。

int compare(T o1,T o2):隨第一個(gè)參數(shù)小于、等于或大于第二個(gè)參數(shù)而分別返回負(fù)整數(shù)、零或正整數(shù)。

2. 對(duì)于處理有中文排序的問(wèn)題

TreeMap hm = new TreeMap<String, String>(new Comparator() {
     public int compare(Object o1, Object o2) {
        //如果有空值,直接返回0
        if (o1 == null || o2 == null)
           return 0;
       CollationKey ck1 = collator.getCollationKey(String.valueOf(o1));
       CollationKey ck2 = collator.getCollationKey(String.valueOf(o2));
       return ck1.compareTo(ck2);
    }
});

備注: CollationKey:CollationKey 表示遵守特定 Collator 對(duì)象規(guī)則的 String。

比較兩個(gè)CollationKey 將返回它們所表示的 String 的相對(duì)順序。使用 CollationKey來(lái)比較 String 通常比使用 Collator.compare 更快。因此,當(dāng)必須多次比較 String 時(shí)(例如,對(duì)一個(gè) String 列表進(jìn)行排序),使用 CollationKey 會(huì)更高效。

實(shí)例:

package ChineseSort;
import java.util.Collection;
import java.util.Iterator;
import java.util.SortedMap;
import java.util.TreeMap;
public class TestSort {
public static void main(String[] args) {
  // TODO Auto-generated method stub
  CollatorComparator comparator = new CollatorComparator();
  TreeMap map = new TreeMap(comparator);
  for(int i=0; i<10; i++) {
    String s = ""+(int)(Math.random()*1000);
    map.put(s,s);
  }
  map.put("abcd","abcd");
  map.put("Abc", "Abc");
  map.put("bbb","bbb");
  map.put("BBBB", "BBBB");
  map.put("北京","北京");
  map.put("中國(guó)","中國(guó)");
  map.put("上海", "上海");
  map.put("廈門(mén)", "廈門(mén)");
  map.put("香港", "香港");
  map.put("碑海", "碑海");
  Collection col = map.values();
  Iterator it = col.iterator();
  while(it.hasNext()) {
    System.out.println(it.next());
  }
}
}

比較器類:

package ChineseSort;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
public class CollatorComparator implements Comparator {
Collator collator = Collator.getInstance();
public int compare(Object element1, Object element2) {
  CollationKey key1 = collator.getCollationKey(element1.toString());
  CollationKey key2 = collator.getCollationKey(element2.toString());
  return key1.compareTo(key2);
}
}

運(yùn)行該類,運(yùn)行結(jié)果如下:

325
62
653
72
730
757
874
895
909
921
Abc
abcd
bbb
BBBB
碑海
北京
上海
廈門(mén)
香港
中國(guó)

此時(shí)可以看到中文的排序已經(jīng)完成正常。如果想不讓英文區(qū)分大小寫(xiě),則修改CollatorComparator類,找到

element1.toString()

修改為:

element1.toString().toLowerCase()

當(dāng)然你改成轉(zhuǎn)換成大寫(xiě)的也無(wú)所謂了,當(dāng)然

element2.toString()

也要同時(shí)修改為

element2.toString().toLowerCase()

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 解決IDEA新建xml文件顯示為普通的text文本問(wèn)題

    解決IDEA新建xml文件顯示為普通的text文本問(wèn)題

    IntelliJ IDEA新建XML文件時(shí)顯示為普通文本,可以通過(guò)以下步驟解決:1.檢查項(xiàng)目文件過(guò)濾器,確保沒(méi)有隱藏XML文件類型;2.在XML文件中添加或修改文件類型關(guān)聯(lián);3.如果問(wèn)題依然存在,檢查并刪除自定義的文件類型過(guò)濾器
    2024-11-11
  • Java設(shè)計(jì)模式之觀察者模式詳解

    Java設(shè)計(jì)模式之觀察者模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之觀察者模式詳解,對(duì)象之間的多對(duì)一依賴的一種設(shè)計(jì)方案,被依賴的對(duì)象為Subject,依賴的對(duì)象為Observer,Subject通知Observer變化,需要的朋友可以參考下
    2023-12-12
  • SpringBoot實(shí)現(xiàn)微服務(wù)通信的多種方式

    SpringBoot實(shí)現(xiàn)微服務(wù)通信的多種方式

    微服務(wù)通信是指在分布式系統(tǒng)中,各個(gè)微服務(wù)之間進(jìn)行數(shù)據(jù)交互和通信的過(guò)程,今天我們將探討在Spring Boot中實(shí)現(xiàn)微服務(wù)通信的多種方式,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • java 方法泛型入?yún)和String的重載關(guān)系詳解

    java 方法泛型入?yún)和String的重載關(guān)系詳解

    這篇文章主要介紹了java 方法泛型入?yún)和String的重載關(guān)系詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java的Comparable,Comparator和Cloneable三大接口詳解

    Java的Comparable,Comparator和Cloneable三大接口詳解

    這篇文章主要為大家詳細(xì)介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • IDEA自定義pom依賴的步驟詳解

    IDEA自定義pom依賴的步驟詳解

    這篇文章主要介紹了IDEA自定義pom依賴的步驟詳解,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • JDBC用IDEA連接SQLServer數(shù)據(jù)庫(kù)的超實(shí)用教程

    JDBC用IDEA連接SQLServer數(shù)據(jù)庫(kù)的超實(shí)用教程

    JDBC是Java連接數(shù)據(jù)庫(kù)的一種接口,它由各個(gè)數(shù)據(jù)庫(kù)廠商為開(kāi)發(fā)者提供的接口,要使用它需要到相應(yīng)廠商下載對(duì)應(yīng)的jar包,下面這篇文章主要給大家介紹了關(guān)于JDBC用IDEA連接SQLServer數(shù)據(jù)庫(kù)的超實(shí)用教程,需要的朋友可以參考下
    2023-05-05
  • 基于Java將Excel科學(xué)計(jì)數(shù)法解析成數(shù)字

    基于Java將Excel科學(xué)計(jì)數(shù)法解析成數(shù)字

    這篇文章主要介紹了基于Java將Excel科學(xué)計(jì)數(shù)法解析成數(shù)字,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java springmvc 注冊(cè)中央調(diào)度器代碼解析

    java springmvc 注冊(cè)中央調(diào)度器代碼解析

    這篇文章主要介紹了java springmvc 注冊(cè)中央調(diào)度器代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Spring?MVC請(qǐng)求處理流程和九大組件詳解

    Spring?MVC請(qǐng)求處理流程和九大組件詳解

    這篇文章主要介紹了Spring?MVC請(qǐng)求處理流程和九大組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12

最新評(píng)論

长葛市| 宁陵县| 垣曲县| 惠来县| 凯里市| 仙居县| 仙居县| 扶绥县| 罗定市| 湘乡市| 东山县| 满洲里市| 河南省| 潢川县| 收藏| 江都市| 石阡县| 枝江市| 游戏| 通化县| 游戏| 乾安县| 兰考县| 剑河县| 乌什县| 梁山县| 会东县| 广平县| 虹口区| 友谊县| 和平县| 兴仁县| 云梦县| 乌恰县| 海宁市| 鹰潭市| 辽宁省| 大荔县| 邢台市| 嵊州市| 和田县|