国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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 中文字符按Unicode排序的實(shí)現(xiàn)方法

Java 中文字符按Unicode排序的實(shí)現(xiàn)方法

2021-06-09 13:47robin Java教程

這篇文章主要介紹了Java 中文字符按Unicode排序的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

遇到了一個(gè)對包含中文的字符串進(jìn)行排序的問題。要求按unicode編碼對字符串進(jìn)行排序。

測試字符串?dāng)?shù)組如下:

?
1
2
3
4
5
6
7
8
string[] arr = {
    "1-測試",
    "1-編輯",
    "1-營銷",
    "1結(jié)束",
    "2-測試",
    "1-qt"
};

按unicode排序的期望結(jié)果應(yīng)該是這樣的:

1-編輯, 1-測試, 1-營銷, 1-qt, 1結(jié)束, 2-測試

先按java.lang.string類提供的默認(rèn)比較方案進(jìn)行實(shí)現(xiàn),大致如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.arrays;
import java.util.comparator;
public class myjob {
  public static void main(string[] args) {
    string[] arr = {
        "1-測試",
        "1-編輯",
        "1-營銷",
        "1結(jié)束",
        "2-測試",
        "1-qt"
    };
    comparator<string> c = string::compareto;
    arrays.sort(arr, c);
    system.out.println(arrays.tostring(arr));
  }
}

結(jié)果如下:

[1-qt, 1-測試, 1-編輯, 1-營銷, 1結(jié)束, 2-測試]

可以看到中文字符不能按照拼音進(jìn)行排序。這時(shí)最直接的思路就是將中文字符轉(zhuǎn)為拼音后再進(jìn)行排序。但是要注意下,在這里面有個(gè)字符串不包含中文字符,這就容易導(dǎo)致順序混亂。

如下面這幾個(gè)字符串按拼音進(jìn)行排序順序如下:

1-編輯,1-測試,1-qt,1-營銷

可以看到字符串“1-qt”的位置出錯(cuò)了。 但是按拼音來說它的位置又是對的。這不能不說是一個(gè)讓人有些頭疼的地方。

不過不用擔(dān)心,java提供了java.text.collator類來支持規(guī)范化的字符串比較。

使用collator來改造之前的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.text.collator;
import java.util.arrays;
import java.util.comparator;
import java.util.locale;
public class myjob {
  public static void main(string[] args) {
    string[] arr = {
        "1-測試",
        "1-編輯",
        "1-營銷",
        "1結(jié)束",
        "2-測試",
        "1-qt"
    };
    comparator<string> c = (o1, o2) -> collator.getinstance(locale.chinese).compare(o1, o2);
    arrays.sort(arr, c);
    system.out.println(arrays.tostring(arr));
  }
}

改造后的程序執(zhí)行排序的結(jié)果如下:

[1-qt, 1-編輯, 1-測試, 1結(jié)束, 1-營銷, 2-測試]

結(jié)果看著好像還ok。但是停停、注意下、字符串“1結(jié)束”的位置好像比較奇妙,理想情況下它應(yīng)該在“1-營銷”的后面。

這里出問題的原因我沒有弄清楚。猜測著應(yīng)該是java在chinese語法中將中劃線處理為空字符了。不過最根本的問題還是java對unicode collation algorithm(uca,unicode整理算法)的支持并不好。

此時(shí)可以考慮使用ibm icu提供的collator來替換jdk默認(rèn)的collator。代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import com.ibm.icu.text.collator;
import java.util.arrays;
import java.util.comparator;
import java.util.locale;
public class myjob {
  public static void main(string[] args) {
    string[] arr = {
        "1-測試",
        "1-編輯",
        "1-營銷",
        "1結(jié)束",
        "2-測試",
        "1-qt"
    };
    comparator<string> c = (o1, o2) -> collator.getinstance(locale.chinese).compare(o1, o2);
    arrays.sort(arr, c);
    system.out.println(arrays.tostring(arr));
  }
}

相關(guān)的依賴為:

?
1
2
3
4
5
<dependency>
   <groupid>com.ibm.icu</groupid>
   <artifactid>icu4j-localespi</artifactid>
   <version>60.2</version>
 </dependency>

執(zhí)行結(jié)果為:

[1-編輯, 1-測試, 1-營銷, 1-qt, 1結(jié)束, 2-測試]

可以看到是和預(yù)期一致的。

總結(jié)

原文鏈接:http://www.zhyea.com/2018/10/30/java-string-in-chinese-sort-with-unicode.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本福利在线观看 | 精品乱子伦一区二区三区 | 欧美成视频 | 伊人网电影 | 日韩欧美中文 | 亚洲天堂一区在线 | 国产成人精品免高潮在线观看 | 久久综合久色欧美综合狠狠 | 黄色一级片在线观看 | 亚洲国产精品99久久久久久久久 | 97久久香蕉国产线看观看 | 日本精品网| 亚洲一区国产视频 | 国产视频一区在线 | 日韩电影在线看 | 久草福利资源 | 免费人成电影 | 欧洲一级毛片 | 人人澡人人射 | 国内精品一区二区 | 青青av| 亚洲国产成人精品女 | 国产精品视频网站 | 中文字幕久久精品 | 国产一区二区三区免费在线 | 无码一区二区三区视频 | 一区二区三区在线看 | 午夜小电影 | 久久一区二区视频 | 久久综合国产 | av色综合 | 国产成人一区 | 香蕉视频在线看 | 成年人免费网站 | 二区在线视频 | 久久精品一区二区三区中文字幕 | 亚洲国产一区二区三区精品 | 欧美成人区 | 国产精品久久av | 亚洲精品资源在线观看 | 性色蜜桃x88av |