자바 집합 프레임 워 크 - TreeSet 연습
import java.util.*;
/*
练习:按照字符串长度排序。
字符串本身具备比较性,但是它的比较方式不是所需要的。这时就只能使用比较器
注意:在方式二中:
int num=new Integer(str1.length()).compareTo(new Integer(str2.length()));
此时num的值有三种可能。正数、负数、零。千万不要写下面的代码:
if(num==1)
return 1;
num不一定等于1。我们在函数中返回的0,1,-1只是代表三种情况:零,正数,负数。这个一定要注意。
*/
class MyCompare implements Comparator //自定义比较器
{
public int compare(Object obj1,Object obj2)
{
if(!(obj1 instanceof String) || !(obj2 instanceof String))
throw new RuntimeException("不是字符串!");
String str1=(String)obj1;
String str2=(String)obj2;
/*方式一
if(str1.length()>str2.length())
return 1;
if(str1.length()==str2.length())
{
return str1.compareTo(str2);
}
return -1;
*/
/*方式二*/
int num=new Integer(str1.length()).compareTo(new Integer(str2.length()));
if (num==0)
{
return str1.compareTo(str2);
}
return num;
}
}
//如果没有上面的自定义类,那么TreeSet会按照自然顺序进行排序(字符串的字母自然排序)
class TreeSetTest1
{
public static void main(String[] args)
{
TreeSet ts=new TreeSet(new MyCompare());
//TreeSet ts=new TreeSet();
ts.add("abcd");
ts.add("dgf");
ts.add("aakuop");
ts.add("po");
ts.add("hello");
ts.add("hello");
ts.add("world");
ts.add("werttif");
ts.add("hello");
Iterator it=ts.iterator();
while(it.hasNext())
{
sop((String)it.next());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.