服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - java字符串数组进行大小排序的简单实现

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

2020-06-09 11:58jingxian JAVA教程

下面小编就为大家带来一篇java字符串数组进行大小排序的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

若是将两个字符串直接比较大小,会包: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字符串数组进行大小排序的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

延伸 · 阅读

精彩推荐
  • JAVA教程归并排序的原理及java代码实现

    归并排序的原理及java代码实现

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序...

    hebedich4512020-03-26
  • JAVA教程深入理解Java反射

    深入理解Java反射

    在理解反射原理之前先要搞清类型信息。接下来通过本文给大家介绍java反射的深入理解,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧 ...

    luoxn283542020-05-31
  • JAVA教程java实现List中对象排序的方法

    java实现List中对象排序的方法

    这篇文章主要介绍了java实现List中对象排序的方法,涉及Java中的遍历与对象操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    5iasp2622020-01-15
  • JAVA教程使用webmagic实现爬虫程序示例分享

    使用webmagic实现爬虫程序示例分享

    这篇文章主要介绍了使用webmagic实现爬虫程序示例,需要的朋友可以参考下 ...

    Java教程网4162019-11-19
  • JAVA教程Java中接口和抽象类的区别与相同之处

    Java中接口和抽象类的区别与相同之处

    这篇文章主要介绍了Java中接口和抽象类的区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口和抽象类的区别与联系等内容,需要的朋友可以参考...

    junjie2432019-12-20
  • JAVA教程Java精确抽取网页发布时间

    Java精确抽取网页发布时间

    这篇文章主要为大家详细介绍了Java精确抽取网页发布时间的相关资料,尽量做到精确无误,感兴趣的小伙伴们可以参考一下 ...

    java教程网4572020-05-13
  • JAVA教程Java设计模式之备忘录模式(Memento模式)介绍

    Java设计模式之备忘录模式(Memento模式)介绍

    这篇文章主要介绍了Java设计模式之备忘录模式(Memento模式)介绍,memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先...

    junjie3772019-12-11
  • JAVA教程java多线程抓取铃声多多官网的铃声数据

    java多线程抓取铃声多多官网的铃声数据

    很容易就能发现通过改变 listId和page就能从服务器获取铃声的json数据, 通过解析json数据, 可以看到都带有{"hasmore":1,"curpage":1}这样子的指示,通过判断ha...

    bobo_ll1402020-04-21