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

但是需要导入一个包

原文地址:https://www.cnblogs.com/suinuaner/p/javaset_treeset.html