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

所属分类: 软件编程 / java 阅读数: 40
收藏 0 赞 0 分享

若是将两个字符串直接比较大小,会包: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,排序从小到大

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的面向对象编程基本概念学习笔记整理,包括类与方法以及多态等支持面向对象语言中的重要特点,需要的朋友可以参考下
收藏 0 赞 0 分享

Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法

这篇文章主要介绍了Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

基于Java实现杨辉三角 LeetCode Pascal's Triangle

这篇文章主要介绍了基于Java实现杨辉三角 LeetCode Pascal's Triangle的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中Spring获取bean方法小结

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?下面通过本文给大家介绍Java中Spring获取bean方法小结,对spring获取bean方法相关知识感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

如何计算Java对象占用了多少空间?

在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小,需要的朋友可以参考下
收藏 0 赞 0 分享

剖析Java中的事件处理与异常处理机制

这篇文章主要介绍了Java中的事件处理与异常处理机制,讲解Java是如何对事件或者异常作出响应以及定义异常的一些方法,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Java的Struts2框架的结构及其数据转移方式

这篇文章主要介绍了详解Java的Struts2框架的结构及其数据转移方式,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

Java封装好的mail包发送电子邮件的类

本文给大家分享了2个java封装好的mail包发送电子邮件的类,并附上使用方法,小伙伴们可以根据自己的需求自由选择。
收藏 0 赞 0 分享

在Java的Struts中判断是否调用AJAX及用拦截器对其优化

这篇文章主要介绍了在Java的Struts中判断是否调用AJAX及用拦截器对其优化的方法,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

java多线程Future和Callable类示例分享

JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。今天我们就来研究下Future和Callab
收藏 0 赞 0 分享
查看更多