激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - Java TreeMap排序算法實(shí)例

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

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

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

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

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

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

為了處理排序的問題:

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

?
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 提供的一個方法,如果參數(shù)字符串等于此字符串,則返回 0 值;如果按字典順序此字符串小于字符串參數(shù),則返回一個小于 0 的值;如果按字典順序此字符串大于字符串參數(shù),則返回一個大于 0 的值。

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

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 對象規(guī)則的 String。

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

實(shí)例:

?
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);
}
}

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

?
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
碑海
北京
上海
廈門
香港
中國

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

?
1
element1.toString()

修改為:

?
1
element1.toString().toLowerCase()

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

?
1
element2.toString()

也要同時修改為

?
1
element2.toString().toLowerCase()

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蜜桃传媒视频麻豆第一区免费观看 | av在线中文 | 九九热九九热 | 美女黄影院 | 91av在线免费播放 | 九九午夜 | 91www成人久久 | 国产噜噜噜噜久久久久久久久 | 27xxoo无遮挡动态视频 | 午夜精品久久久久久毛片 | 亚洲日本韩国在线观看 | 精品国产一区二区三区久久久蜜 | 色诱亚洲精品久久久久久 | 欧美爱爱视频网站 | 成人免费在线网 | 中文字幕在线观看视频www | 激情小说图 | 久久久久久久久久久久久久久伊免 | 亚洲字幕av| 高清做爰免费无遮网站挡 | 久久欧美亚洲另类专区91大神 | 91精品国产网站 | 久久久久久久久久久久久九 | 久精品久久 | 国产午夜亚洲精品理论片大丰影院 | 欧洲精品久久 | 亚洲一级片免费观看 | 久久午夜神器 | 亚洲精品成人悠悠色影视 | 国内精品视频饥渴少妇在线播放 | 久久久国产精品免费观看 | 黄色一级视频 | 亚洲九九爱 | 国产精品视频一区二区三区综合 | 日韩免费黄色 | 国产精品性夜天天视频 | 久久久国产精品网站 | 亚洲精品一区二区三区在线看 | 五月天影院,久久综合, | 激情久久免费视频 | 欧美日韩亚洲另类 |