java字符串?dāng)?shù)組進(jìn)行大小排序的簡(jiǎn)單實(shí)現(xiàn)
若是將兩個(gè)字符串直接比較大小,會(huì)包:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String的錯(cuò)誤。
字符串比較大小可以用字符串長(zhǎng)度或者是比較字符串內(nèi)字符的ASCII碼值,前者太簡(jiǎn)單,就不進(jìn)行講述記錄。
字符串用ASCII碼比較大小,規(guī)則是:
1、比較首字母的ASCII碼大小
2、若是前面的字母相同,則比較之后的字母的ASCII碼值
3、若是一個(gè)字符串從首字母開始包含另一個(gè)字符串,則認(rèn)為字符串長(zhǎng)度較長(zhǎng)的大;例 :abc > ab
備注:代碼中使用commons-logging-1.2.jar,排序從小到大
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 對(duì)字符串?dāng)?shù)組進(jìn)行排序
* @author panjianghong
* @since 2016/8/31
* */
public class StringSort {
private static final Log _log = LogFactory.getLog(StringSort.class);
/**
* 對(duì)字符串?dāng)?shù)組進(jìn)行排序
* @param keys
* @return
* */
public static String[] getUrlParam(String[] keys){
for (int i = 0; i < keys.length - 1; i++) {
for (int j = 0; j < keys.length - i -1; j++) {
String pre = keys[j];
String next = keys[j + 1];
if(isMoreThan(pre, next)){
String temp = pre;
keys[j] = next;
keys[j+1] = temp;
}
}
}
return keys;
}
/**
* 比較兩個(gè)字符串的大小,按字母的ASCII碼比較
* @param pre
* @param next
* @return
* */
private static boolean isMoreThan(String pre, String next){
if(null == pre || null == next || "".equals(pre) || "".equals(next)){
_log.error("字符串比較數(shù)據(jù)不能為空!");
return false;
}
char[] c_pre = pre.toCharArray();
char[] c_next = next.toCharArray();
int minSize = Math.min(c_pre.length, c_next.length);
for (int i = 0; i < minSize; i++) {
if((int)c_pre[i] > (int)c_next[i]){
return true;
}else if((int)c_pre[i] < (int)c_next[i]){
return false;
}
}
if(c_pre.length > c_next.length){
return true;
}
return false;
}
public static void main(String[] args) {
String[] keys = getUrlParam(new String[]{"fin","abc","shidema","shide","bushi"});
for (String key : keys) {
System.out.println(key);
}
}
}
控制臺(tái)打印結(jié)果為:
abc
bushi
fin
shide
shidema
以上這篇java字符串?dāng)?shù)組進(jìn)行大小排序的簡(jiǎn)單實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort)
- 淺談java中字符串?dāng)?shù)組、字符串、整形之間的轉(zhuǎn)換
- Java 生成隨機(jī)字符串?dāng)?shù)組的實(shí)例詳解
- java String[]字符串?dāng)?shù)組自動(dòng)排序的簡(jiǎn)單實(shí)現(xiàn)
- Java編程實(shí)現(xiàn)中英混合字符串?dāng)?shù)組按首字母排序的方法
- JAVA中字符串如何與整型數(shù)字相加
- JAVA中整型數(shù)組、字符串?dāng)?shù)組、整型數(shù)和字符串 的創(chuàng)建與轉(zhuǎn)換的方法
相關(guān)文章
在Spring中實(shí)現(xiàn)異步處理的步驟和代碼演示
在Spring中實(shí)現(xiàn)異步處理通常涉及到@Async注解,通過步驟和代碼演示,可以在Spring應(yīng)用程序中實(shí)現(xiàn)異步處理,記住要根據(jù)你的應(yīng)用程序的實(shí)際需求來調(diào)整線程池和異步方法的設(shè)計(jì),感興趣的朋友跟隨小編一起看看吧2024-06-06
Rabbitmq延遲隊(duì)列實(shí)現(xiàn)定時(shí)任務(wù)的方法
這篇文章主要介紹了Rabbitmq延遲隊(duì)列實(shí)現(xiàn)定時(shí)任務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
多數(shù)據(jù)源模式JPA整合sharding-jdbc實(shí)現(xiàn)數(shù)據(jù)脫敏
這篇文章主要為大家介紹了JPA項(xiàng)目中多數(shù)據(jù)源模式整合sharding-jdbc來實(shí)現(xiàn)數(shù)據(jù)脫敏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
java實(shí)現(xiàn)砸金蛋抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)砸金蛋抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
老生常談Java虛擬機(jī)垃圾回收機(jī)制(必看篇)
下面小編就為大家?guī)硪黄仙U凧ava虛擬機(jī)垃圾回收機(jī)制(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
MyBatis學(xué)習(xí)筆記(二)之關(guān)聯(lián)關(guān)系
這篇文章主要介紹了MyBatis學(xué)習(xí)筆記(二)之關(guān)聯(lián)關(guān)系 的相關(guān)資料,需要的朋友可以參考下2016-02-02
java objectUtils 使用可能會(huì)出現(xiàn)的問題
這篇文章主要介紹了java objectUtils 使用可能會(huì)出現(xiàn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Maven分模塊開發(fā)與依賴管理和聚合和繼承及屬性深入詳細(xì)介紹
依賴管理是項(xiàng)目管理中非常重要的一環(huán)。幾乎任何項(xiàng)目開發(fā)的時(shí)候需要都需要使用到庫(kù)。而這些庫(kù)很可能又依賴別的庫(kù),這樣整個(gè)項(xiàng)目的依賴形成了一個(gè)樹狀結(jié)構(gòu),而隨著這個(gè)依賴的樹的延伸和擴(kuò)大,一系列問題就會(huì)隨之產(chǎn)生2022-10-10

