快速业务通道

JAVA提高教程(4)-认识Set集合之TreeSet - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

JAVA提高教程(4)-认识Set集合之TreeSet

时间:2011-04-07 csdn 老紫竹

TreeSet 是用来进行集合排序的,请注意他和LinkedHashSet的区别。

TreeSet是按照一定的规则,将加入到集合里面的数据进行排序,而LinkedHashSet是 严格按照你放入集合的顺序进行使用。

先看源代码

package collection.lession4; import java.util.Arrays; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; /** * 老紫竹JAVA提高教程(4)-认识Set集合之TreeSet。<br> * 此实现的特点是里面的数据会自然排序或者用指定的排序类排序。 *  * @author 老紫竹 JAVA世纪网(java2000.net) *  */ public class Lession4 {   public static void main(String[] args) {    // 测试自然排序    testNature();    // 测试指定排序方式    testComparator();    // 测试特殊的混合对象排序    testMix();   }   public static void testNature() {    // 测试一下数字    TreeSet<Integer> set = new TreeSet<Integer>();    // 反向存入整数数据    for (int i = 10; i >= 1; i--) {     set.add(i);    }    // 输出看看    // 可以看到数据为自然的数字排序    showSet(set); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]    // 测试一下字符串    TreeSet<String> set2 = new TreeSet<String>();    // 同样反向放入    for (int i = 10; i >= 1; i--) {     set2.add(i + "");    }    // 看输出结果    // 10 的自然排序没有2高,因为字符''1''小于''2''    showSet(set2); // [1, 10, 2, 3, 4, 5, 6, 7, 8, 9]    // TreeSet里面的数据因为要排队    // 所以如果是混合类型数据的数据,如果不能字段转换    // 将出现异常 java.lang.ClassCastException:   }   public static void testComparator() {    // 同样测试数字,我们要反向排序    TreeSet<Integer> set = new TreeSet<Integer>(new MyIntegerComparator());    // 反向存入整数数据    for (int i = 10; i >= 1; i--) {     set.add(i);    }    // 输出看看    // 可以看到数据为我们期望的反向排序了    showSet(set); // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]    // 我们指定更奇怪的排序,奇数在前面,偶数在后面    // 我们使用匿名内部类    TreeSet<Integer> set2 = new TreeSet<Integer>(new Comparator<Integer>() {     @Override     public int compare(Integer o1, Integer o2) {      if (o1 % 2 != 0) {       if (o2 % 2 != 0) {        return o2.compareTo(o1);       }       return -1;      }      if (o2 % 2 != 0) {       return 1;      }      return o2.compareTo(o1);     }    });    // 反向存入整数数据    for (int i = 10; i >= 1; i--) {     set2.add(i);    }    // 输出看看    // 可以看到数据,技术的在前面,且从大到小排序    // 偶数在后面,也是从大到小排序    showSet(set2); // [9, 7, 5, 3, 1, 10, 8, 6, 4, 2]   }   /**   * 混合对象,你要为每个对象类型进行计较控制,避免出现转换异常.   */   public static void testMix() {    // 我们测试混合类型的对象,比如字符串和整数    // 如果我们不指定自己的比较器,而使用默认的自然比较器    // 将发生异常    TreeSet set = new TreeSet(new Comparator() {     @Overri

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号