您的位置:首页 > 其它

TreeSet练习题

2016-04-05 15:10 489 查看
1.存储不同长度的不重复的字符串,将其按照长度进行排序:

package collectionTest;
import java.util.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
sortStringByLength();
sortStringByLength2();
}

public static void sortStringByLength() {
// TODO Auto-generated method stub

//不重复字符串,按长度进行排序
Set set = new TreeSet(new ComparatorByLength());

set.add("aaa");
set.add("zzzzzzzzzzs");
set.add("zz");
set.add("zzzz");

for(Object obj :set){
System.out.println(obj);
}

}

}


ComparatorByLength类:

package collectionTest;
import java.util.Comparator;
public class ComparatorByLength implements Comparator {
//实现了比较器接口,并重写了compare方法
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
String s1 = (String)o1;
String s2 = (String)o2;
int temp = s1.length()-s2.length();
return temp==0?s1.compareTo(s2):temp;
}

}


2.对多个重复的不同长度的字符串按照长度进行排序:

public static void sortStringByLength2() {
// TODO Auto-generated method stub

String[] str = { "hellowolrd", "nba", "cbaaa", "daddy", "hellowolrd","nba", "cbaaa", "daddy" };
//自然排序可以使用String类中的compareTo方法
//但现在需要长度排序,这个时候需要比较器;
//定义一个按照长度比较的比较器
// 用嵌套循环来排序
Comparator comp = new ComparatorByLength();
for (int x = 0; x < str.length - 1; x++) {
for (int y = x + 1; y < str.length; y++) {
//if (str[x].compareTo(str[y]) > 0) {  自然排序
if(comp.compare(str[x], str[y])>0){
swap(str, x, y);
}
}
}
for(String a :str){
System.out.println(a);
}
}

private static void swap(String[] str, int x, int y) {
// TODO Auto-generated method stub
String temp = str[x];
str[x] = str[y];
str[y] = temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: