国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java TreeMap排序算法實例

Java TreeMap排序算法實例

2020-11-28 14:52johennes Java教程

這篇文章主要介紹了Java TreeMap排序算法,結合實例形式分析了TreeMap排序算法的原理、實現方法與相關注意事項,需要的朋友可以參考下

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

TreeMap 和 HashMap 用法大致相同,但實際需求中,我們需要把一些數據進行排序;

以前在項目中,從數據庫查詢出來的數據放在List中,順序都還是對的,但放在HashMap中,順序就完全亂了。

為了處理排序的問題:

1. 對于一些簡單的排序,如:數字,英文字母等

?
1
2
3
4
5
6
7
8
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 提供的一個方法,如果參數字符串等于此字符串,則返回 0 值;如果按字典順序此字符串小于字符串參數,則返回一個小于 0 的值;如果按字典順序此字符串大于字符串參數,則返回一個大于 0 的值。

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

2. 對于處理有中文排序的問題

?
1
2
3
4
5
6
7
8
9
10
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 對象規則的 String。

比較兩個CollationKey 將返回它們所表示的 String 的相對順序。使用 CollationKey來比較 String 通常比使用 Collator.compare 更快。因此,當必須多次比較 String 時(例如,對一個 String 列表進行排序),使用 CollationKey 會更高效。

實例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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("中國","中國");
  map.put("上海", "上海");
  map.put("廈門", "廈門");
  map.put("香港", "香港");
  map.put("碑海", "碑海");
  Collection col = map.values();
  Iterator it = col.iterator();
  while(it.hasNext()) {
    System.out.println(it.next());
  }
}
}

比較器類:

?
1
2
3
4
5
6
7
8
9
10
11
12
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);
}
}

運行該類,運行結果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
325
62
653
72
730
757
874
895
909
921
Abc
abcd
bbb
BBBB
碑海
北京
上海
廈門
香港
中國

此時可以看到中文的排序已經完成正常。如果想不讓英文區分大小寫,則修改CollatorComparator類,找到

?
1
element1.toString()

修改為:

?
1
element1.toString().toLowerCase()

當然你改成轉換成大寫的也無所謂了,當然

?
1
element2.toString()

也要同時修改為

?
1
element2.toString().toLowerCase()

希望本文所述對大家java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 综合色久 | 日本综合色 | 国产另类ts人妖一区二区 | 偷拍第一页 | 欧洲一区二区在线观看 | 综合二区 | 国产一区二区精品久久岳 | 黄色毛片儿 | 日韩大片播放器 | 91免费在线视频 | 亚洲国产aⅴ精品一区二区 少妇一级片免费看 | 日本黄色美女视频 | 亚洲精品h | 日韩欧美在线视频 | 国产成人精品久久二区二区 | 欧美日韩三级 | 黄色免费在线观看 | 欧洲精品一区 | 牛牛澡牛牛爽一区二区 | 精品国产影院 | 九九热免费精品视频 | 国产精品久久久久久久9999 | 99热最新网站 | 日韩电影中文字幕 | 久久99久久99精品免视看婷婷 | 亚洲国产精品久久久久婷婷老年 | 99伊人| 91精品国产综合久久久久久 | 中文字幕在线电影 | 欧美激情视频一区二区三区在线播放 | 日本99精品 | 久色网| 国产精品伦一区二区三级视频 | 亚洲 欧美 另类 综合 偷拍 | 久热中文字幕 | 亚洲精品视频在线免费播放 | 欧美日韩国产一区二区三区 | 中文字幕在线观看 | 久久黄视频 | 午夜国产精品成人 | 青娱乐一区 |