黑马程序员技术交流社区
标题:
关于TreeSet练习练习部分
[打印本页]
作者:
我为你着迷
时间:
2014-5-3 17:10
标题:
关于TreeSet练习练习部分
import java.util.*;
class TreeSetTest
{
public static void main(String[] args)
{
TreeSet ts=new TreeSet();
ts.add("abcd");
ts.add("cc");
ts.add("cba");
ts.add("aaa");
ts.add("z");
ts.add("hahaha");
Iterator it=ts.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
class StrLenComparator implements Comparator
{
public int compare(Object o1,Object o2)
{
String s1=(String)o1;
String s2=(String)o2;
int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num==0)
return s1.compareTo(s2);
return num;
}
}
复制代码
大家好,我想问下String为什么要做强转呢?还有
int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num==0)
return s1.compareTo(s2);
这句话是什么意思呢? 麻烦帮忙解答下,3Q。
作者:
唯伟123
时间:
2014-5-3 17:33
此时你传入的o1,o2是Object类型,而你是用String类型接收,会发生类型转换异常,就像你将一个动物类赋给猫类,所以需要强转。
而String类中compareTo()方法的意思是比较字符串按字典顺序比较。
int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));这是比较字符串长度
if(num==0)
return s1.compareTo(s2);
当他们长度相同时,就比较他们的字典长度,如果是按英文字母开头的,就是按A-->Z排。
作者:
skill20
时间:
2014-5-3 17:34
public int compare(Object o1,Object o2) //这里的参数类型是Object。
{
String s1=(String)o1; //所以这里要强转。
String s2=(String)o2;
int num=new Integer(s1.length()).compareTo(new Integer(s2.length())); // 基本类型的包装类才实现了Comparable接口。
if(num==0)
return s1.compareTo(s2);
return num;
}
复制代码
作者:
我为你着迷
时间:
2014-5-3 20:19
唯伟123 发表于 2014-5-3 17:33
此时你传入的o1,o2是Object类型,而你是用String类型接收,会发生类型转换异常,就像你将一个动物类赋给猫 ...
谢谢啊 辛苦了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2