java集合使用——TreeSet


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;
 }

但是需要導入一個包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM