服务器之家

服务器之家 > 正文

java字符串数组进行大小排序的简单实现

时间:2020-06-09 11:58     来源/作者:jingxian

若是将两个字符串直接比较大小,会包:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String的错误。

字符串比较大小可以用字符串长度或者是比较字符串内字符的ASCII码值,前者太简单,就不进行讲述记录。

字符串用ASCII码比较大小,规则是:

1、比较首字母的ASCII码大小

2、若是前面的字母相同,则比较之后的字母的ASCII码值

3、若是一个字符串从首字母开始包含另一个字符串,则认为字符串长度较长的大;例 :abc > ab

备注:代码中使用commons-logging-1.2.jar,排序从小到大

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
/**
 * 对字符串数组进行排序
 * @author panjianghong
 * @since 2016/8/31
 * */
public class StringSort {
  
  private static final Log _log = LogFactory.getLog(StringSort.class);
  /**
   * 对字符串数组进行排序
   * @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;
  }
 
  /**
   * 比较两个字符串的大小,按字母的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("字符串比较数据不能为空!");
      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);
    }
 
  }
}

控制台打印结果为:

abc
bushi
fin
shide
shidema

以上这篇java字符串数组进行大小排序的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

标签:

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
返回顶部