TreeSet是一個有序的集合。
第一:構造、增加、遍歷、刪除和判斷是否包含某個元素同HashSet是一致的。、
第二:證明TreeSet是一個有序的集合。
TreeSet hashSet = new TreeSet();
hashSet.add("a"); //向集合中添加一個字符串
hashSet.add("e");
hashSet.add("b");
hashSet.add("d");
hashSet.add("c");
Iterator it = hashSet.iterator();
while(it.hasNext()){
System.out.println(it.next()+",");
}
輸出結果是:
a,
b,
c,
d,
e,
注意:(1)從結果中可以看出元素被排序了,但是這個用默認的排序方法。如何自定義排序呢?可以實現Comparator接口來自定義排序。例如:
import java.util.Comparator;
import ws.wph.android.util.StringUtils;
public class MyCmp implements Comparator {
public int compare(Object element1, Object element2) {
int x = element2.toString().compareTo(element1.toString());
return x;
}
}
然后將該類的對象作為TreeSet構造方法的實參,即TreeSet hashSet = new TreeSet(new MyCmp());。原理是:向TreeSet增加元素時,自動調用MyCmp類的compare(Object element1, Object element2)方法,根據方法返回值決定element1和element2的順序。(此時的輸出結果是:e,
d,
c,
b,
a,)
(2)當element1 == element2時返回0,element1 > element2 返回正數,element1 < element2返回負數。
第三:按照學生成績排序,當成績相同時按照學號排序
public int compare(Object element1, Object element2) {
int x=0;
Stuendt s1 = (Stuendt)element1;
Stuendt s2 = (Stuendt)element2;
if(s1.getScore() > s2.getScore()){
x=-1;
}else if(s1.getScore() < s2.getScore()){
x=1;
}else{
x = s1.getSno().compareTo(s2.getSno());
}
return x;
}
(3)將漢字轉換成拼音
public static String getPingYin(String src){
char[] t1 = null;
t1=src.toCharArray();
String[] t2 = new String[t1.length];
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
String t4="";
int t0=t1.length;
try {
for (int i=0;i<t0;i++)
{
//判斷是否為漢字字符
if(java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+"))
{
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
t4+=t2[0];
}
else
t4+=java.lang.Character.toString(t1[i]).toLowerCase();
}
return t4;
}catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return t4;
}
但是需要導入一個包