package cn.mmc.day14; import java.util.*; /* 当元素自身不具备比较性,或者具备的比较性不是所需要的。 这时需要让容器自身具备比较性。 定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。 当两种排序都存在时,以比较器为主。 定义一个类,实现Comparator接口,覆盖compare方法。 */ public class TreeSetExcise { public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(new Student("lisi02",22)); ts.add(new Student("lisi02",21)); ts.add(new Student("lisi007",20)); ts.add(new Student("lisi09",19)); ts.add(new Student("lisi06",18)); ts.add(new Student("lisi06",18)); ts.add(new Student("lisi007",29)); //ts.add(new Student("lisi007",20)); //ts.add(new Student("lisi01",40)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student)it.next(); System.out.println(stu.getName()+"..."+stu.getAge()); } } } class MyCompare implements Comparator { public int compare(Object o1,Object o2) { Student s1 = (Student)o1; Student s2 = (Student)o2; int num = s1.getName().compareTo(s2.getName()); if(num==0)//当姓名相同时,在判断年龄 { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); /* if(s1.getAge()>s2.getAge()) return 1; if(s1.getAge()==s2.getAge()) return 0; return -1; */ } return num; } } /* 练习:按照字符串长度排序。 字符串本身具备比较性。但是它的比较方式不是所需要的。 这时就只能使用比较器。 */ class TreeSetTest { public static void main(String[] args) { TreeSet ts = new TreeSet(new StrLenComparator()); ts.add("abcd"); ts.add("cc"); ts.add("cba"); ts.add("aaa"); ts.add("z"); ts.add("hahaha"); Iterator it = ts.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } } class StrLenComparator implements Comparator { public int compare(Object o1,Object o2) { String s1 = (String)o1; String s2 = (String)o2; /* if(s1.length()>s2.length()) return 1; if(s1.length()==s2.length()) return 0; */ int num = new Integer(s1.length()).compareTo(new Integer(s2.length())); if(num==0) return s1.compareTo(s2); return num; } }
详细解决方案
基础――TreeSet习题0523
热度:119 发布时间:2012-08-30 09:55:54.0
相关解决方案
- TreeSet 、HashSet 、LinkedHashSet 的施用
- TreeSet ,HashSet 和LinkHashSet的性能比,该如何解决
- 会合框架-TreeSet
- TreeSet 中的add不能使用解决办法
- java 对象器皿 TreeSet 反序排列
- 这个 TreeSet 集合中的 泛型限定 super 有关问题
- new TreeSet<String>(comparator) 不带有参数?这是什么意思呃。多谢
- TreeSet 里可以插入重复元素嘛解决方案
- TreeSet 排序?该如何解决
- Java集合-Arraylist,Linklist,Hashset,Treeset,Hashmap,Treemap区分
- JAVA学习-数据结构-TreeSet-二叉搜索树
- java 集合类的区别(ArrayList,HashSet,LinkedHashSet,TreeSet)
- 研究JAVAAPI系列--TreeSet
- Java:泛型,set集合,增强for循环、TreeSet、静态导入、可变参数
- JavaSE基础(105) TreeSet
- java数据结构--TreeSet
- [Java 13 类集合] BasicContainer, Collection, Set, HashSet, TreeSet
- Java 集合 (14) -- TreeSet 类
- 不是太细的java自学笔记进阶篇4(p514-547)(集合Collection,iterator,foreach,set,TreeSet)
- JAVA基础整理(迭代器,Set集合 TreeSet)
- day17(Set集合:HashSet LinkedHashSet TreeSet)
- java TreeSet 源码分析
- 28.Set接口--HashSet 、LinkedHashSet 、TreeSet
- Set集合:去重+排序功能(TreeSet)
- Java的Set集合(HashSet、TreeSet)学习
- (JavaSE 学习记录) Set接口、HashSet、TreeSet
- (集合)java中的哈希表,HashSet,TreeSet
- 2020-3-28集合Set、HashSet、LinkedHashSet、TreeSet
- Set接口(HashSet,TreeSet)
- JavaSE进阶笔记-集合02(Set,TreeSet,二叉树)