`
wobfei
  • 浏览: 146874 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

String的compareTo用法

J# 
阅读更多

         StringcompareTo其实就是依次比较两个字符串ASC码。如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值。如果两个字符串完全一样,则返回0。来看一下代码。

public int compareTo(String anotherString) {

    int len1 = count;

    int len2 = anotherString.count;

    //获取到两个字符串的较短的长度

    int n = Math.min(len1, len2);

    char v1[] = value;

    char v2[] = anotherString.value;

    int i = offset;

    int j = anotherString.offset;

    if (i == j) {

        int k = i;

        int lim = n + i;

        while (k < lim) {

            char c1 = v1[k];

            char c2 = v2[k];

            //如果两个字符的ASC不相同,则直接返回

if (c1 != c2) {

                return c1 - c2;

            }

            k++;

        }

    } else {

        while (n-- != 0) {

           char c1 = v1[i++];

           char c2 = v2[j++];

             //如果两个字符的ASC不相同,则直接返回

           if (c1 != c2) {

               return c1 - c2;

           }

        }

    }

    //如果都一样,返回两个字符串的长度查

    return len1 - len2;

    }
 

根据上面的代码,我们可以很方便的计算吃两个字符串的comperTo的值:

 

 

       "abcd".compareTo("adef")== -2

       "abc".compareTo("abcdef")== -3

       "abc".compareTo("abc") == 0

 

      但一直在想着compareTo可以用于实际中什么应用呢??我这里例举使用compareTo进行简单 字符串的排序。(例如使用compareTo 进行姓名的排序)

//需要进行排序的字符串
String[] array = new String[] { "lilei", "libai", "james", "poly",
				"wobfei" };
//使用简单的循环排序
		for (int i = 0; i < array.length - 1; i++) {
			for (int j = i + 1; j < array.length; j++) {
				if (array[i].compareTo(array[j]) > 0) {
					String temp = array[i];
					array[i] = array[j];
					array[j] = temp;
				}
			}
		}

 

 

 

使用上面针对String的排序以后,字符串的内容将会是:

 

james  libai  lilei  poly  wobfei

分享到:
评论
1 楼 xiaofanac66 2013-11-04  
thank you

相关推荐

    java源码解析之String类的compareTo(String otherString)方法

    主要给大家介绍了关于java源码解析之String类的compareTo(String otherString)方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    Java语言程序设计(第3版)第06章-字符串.pptx

    使用String类的构造方法。 String str = new String("Java is cool"); 这两种方式有区别,后面说明。 创建字符串对象 Java语言程序设计(第3版) Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第4页。 ...

    死磕Lambda表达式(二):Lambda的使用

    城市就是森林,每一个男人都是猎手,...这里使用的sort方法的参数类型是Comparator,我们就是把Lambda表达式作为Comparator传入sort方法中的。Comparator就是一个函数式接口,那么什么是函数式接口? 函数式接口 函数式

    Java 2实用教程(第三版)实验指导与习题解答

    实验1 String类的常用方法 19 实验2 比较日期的大小 21 实验3 处理大整数 22 上机实践6 组件及事件处理 23 实验1 算术测试 23 实验2 信号灯 25 实验3 布局与日历 28 上机实践7 组件及事件处理2 31 实验1 方程求根 31...

    java面试宝典2012版.pdf

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 71、说出一些常用的类,包,接口,请各举5个 72、java中有几种...

    Java程序设计实验报告.doc

    } } 实验结果: 实验心得体会: 掌握了java的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义 及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。 实验二 实验题目: 自定义一个矩形...

    C#实现类型的比较示例详解

    先看一个例子,这里使用了string,因为string实现了该接口: 其结果是: string是通过按位字母进行比较的,“a”就小于“b”,所以上述str1应该是小于str2的。 而CompareTo方法返回的是int类型,而比较的结果呢,...

    IO输入输出留

    // 使用renameto方法 System.out.println("文件名是否更改成功:" + f1.renameTo(f2)); // 改名以后的的状态 System.out.println(f1.getName() + "是否存在" + f1.exists()); System.out.println(f2....

    死磕Lambda表达式(三):更简洁的Lambda

    在之前的文章中介绍了Lambda表达式的基本语法和正确使用姿势,这次我来介绍一些Lambda更简洁的用法。 类型推断 编译器可以通过函数式接口推断出Lambda表达式的参数类型,所以在编写Lambda表达式时,可以省略参数类型...

    双指针 — Leedcode 524 匹配最长子序列 (medium)

    题目 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以 通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字 典顺序最小的字符串。...使用 String.compareTo 方法:

    java8集合源码-playJava8:玩Java8

    java8集合源码玩Java8 Lambda 表达式 List&lt; String &gt; names = Arrays . asList( " peter " , ...String ...String ...compareTo(a);...String ...方法和构造函数引用 通过使用静态方法引用可以进一步简化上面

    探讨:如何使用委托,匿名方法对集合进行万能排序

    让Employee继承IComparable 接口,实现CompareTo方法排序2.定义一个方法使用Comparison委托,排序的操作交给匿名方法 看完下面的代码,你知道使用Comparison委托的好处吗? 代码如下: class Employee:IComparable ...

    java常用工具类的使用

    SimpleDateFormat是DateFormat的子类,用法和DateFormat类基本一致,主要使用format()方法。 代码演示:SimpleDateFormat进行日期转换 import java.text.SimpleDateFormat; import java.util.Date; public class ...

    最新Java面试宝典pdf版

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    Java面试笔试资料大全

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    Java面试宝典2010版

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 71、说出一些常用的类,包,接口,请各举5个 72、java中有几种...

    Java面试宝典-经典

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    JAVA面试宝典2010

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    java面试题大全(2012版)

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    java面试宝典2012

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 52 71、说出一些常用的类,包,接口,请各举5个 54 72、java中有...

Global site tag (gtag.js) - Google Analytics