`
一个人旅行
  • 浏览: 90576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

现在我算不算会了String的compareTo方法

阅读更多
public int compareTo(String anotherString)
文档描述:
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值:

 this.charAt(k)-anotherString.charAt(k)
 
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值:
 this.length()-anotherString.length()

是这么回事:
当前String对象与anotherString比较,相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不想等的字符差,即this.charAt(k)-anotherString.charAt(k);另一种情况较长字符串的前面部分恰巧是较短字符串,返回它们的长度差,即this.length()-anotherString.length()。

模仿C语言中的strcompare方法:
public static void main(String[] args)
	{
		String str1="abc";
		String str2="abccc";
		System.out.println(Zzz.strCompare(str1, str2));
	}
	public static int strCompare(String str1,String str2)
	{
		char[] cs1=str1.toCharArray();
		char[] cs2=str2.toCharArray();
		int length=Math.min(cs1.length, cs2.length);
		for(int i=0;i<length;i++)
		{
			int result=cs1[i]-cs2[i];
			if(result<0)
			{
				return 1;
			}
			if(result>0)
			{
				return -1;
			}
		}
		if(cs1.length!=cs2.length)
		{
			int result=cs1.length-cs2.length;
			if(result>0)
			{
				return -1;
			}
			if(result<0)
			{
				return 1;
			}
		}
		return 0;
	}
分享到:
评论

相关推荐

    关于重写equals,hashcode以及compareTo方法!

    关于重写equals、hashcode以及compareTo方法! equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,...

    String类下compareTo()与compare()方法比较

    主要介绍了String类下compareTo()与compare()方法比较的相关资料,需要的朋友可以参考下

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

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

    Java的String的常用方法

    String的常用方法归纳与总结 char charAt(int index) 返回指定索引处的 char 值。 int compareTo(Object o) 把这个字符串和另一个对象比较。 int compareTo(String anotherString) 按字典顺序比较两个字符串。 int ...

    java排序代码

    自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列。 定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口实现类对象与该TreeSet集合...

    字符串的比较

    按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。...compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。

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

    6.1.1 字符串比较 Java语言程序设计(第3版) 比较大小: int compareTo(String str) 小于,返回值小于0 等于,返回值等于0 大于,返回值大于0 判断前缀、后缀和包含 boolean startsWith(String prefix) boolean ...

    java面试宝典2012版.pdf

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

    Java学习之 手撕String

    Java学习之 手撕StringJava中非常非常重要的String类所属的包继承关系String对象的构建String类的特性String类的不可变性String类中常用的方法(20+个)equals()equalsIgnoreCase()hashCode()toString()compareTo()...

    用JAVA实现时间比较

    public static int compareTo(String date1,String date2){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); int date = 0; try { Date d1 = sdf.parse(date1); Date d2 = sdf.parse(date...

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

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

    java字符串操作大全

    10、compareTo()和compareToIgnoreCase() 比较字符串 11、indexOf()和lastIndexOf()  indexOf() 查找字符或者子串第一次出现的地方。  lastIndexOf() 查找字符或者子串是后一次出现的地方。 12、substring() ...

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

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

    实现一个圆类

    int compareTo(Circle another) (7) 提供返回当前圆的字符串的方法,格式为:[Circle(x,y)-raduis] String toString() 二、定义一个包含main方法的类TestCircle,位于shape包中。要求如下: (1) main方法中...

    autocad objectarx类的方法属性清单

    方法: {dtor}() {dtor}() {dtor}() {dtor}() ApplyPaperOrientationTransform(Viewport) ApplyPartialUndo(DwgFiler,RXClass) Audit(AuditInfo) Cancel() Close() CloseAndPage(Boolean) CopyFrom...

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

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

    机器人robocode

    package ms; ... private static String botTyp2(String BotName) { int k=BotName.indexOf("."); if (k != -1) { return BotName.substring(0, k); } else return BotName; } }

    Advancedrobocoe

    package ms; ... private static String botTyp2(String BotName) { int k=BotName.indexOf("."); if (k != -1) { return BotName.substring(0, k); } else return BotName; } }

    对Map的key和value进行排序

    Map&lt;String,String&gt; map = new TreeMap&lt;String,String&gt;(new Comparator&lt;String&gt;() { public int compare(String key1, String key2) { return key2.compareTo(key1); } }); ``` 在上面的代码中,我们创建了一个...

    Java程序设计实验报告.doc

    实验代码: public class StrPro { public static void main(String[] args) { String str[] = new String[5]; System.out.println("Please input 10 strings:"); int i; String max,min; for(i=0;i;i++){ System....

Global site tag (gtag.js) - Google Analytics