Java中TreeSet的用法
2016-05-20 10:37
435 查看
Java中 TreeMap和TreeSet算是java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围,而TreeMap内部对元素的操作复杂度为O(logn)。
虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMap是一个内部元素排序版的HashMap。同样,TreeSet是一个封装了一个HashSet的成员变量来实现的。
这里主要展现TreeSet的两种常用方法:
方法一:
输出结果为:
方法二:
虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMap是一个内部元素排序版的HashMap。同样,TreeSet是一个封装了一个HashSet的成员变量来实现的。
这里主要展现TreeSet的两种常用方法:
方法一:
public class TreeSetTest { public static void main(String[] args) { Set<String> set = new TreeSet<String>(); set.add("abc"); set.add("xyz"); set.add("rst"); System.out.println(set);//可以直接输出 Iterator itSet = set.iterator();//也可以遍历输出 while(itSet.hasNext()) System.out.print(itSet.next() + "\t"); System.out.println(); } }
输出结果为:
[abc, rst, xyz] abc rst xyz
方法二:
//自定义数据类型,并在自定义的数据类型中实现CompareTo方法 class Teacher implements Comparable { int num; String name; Teacher(String name, int num) { this.num = num; this.name = name; } public String toString() { return "学号:" + num + " 姓名:" + name; } public int compareTo(Object o) { Teacher ss = (Teacher) o; int result = num > ss.num ? 1 : (num == ss.num ? 0 : -1); if (result == 0) { result = name.compareTo(ss.name); } return result; } } public class TreeSetTest { public static void main(String[] args) { Set<Teacher> treeSet = new TreeSet<Teacher>(); treeSet.add(new Teacher("zhangsan", 2)); treeSet.add(new Teacher("lisi", 1)); treeSet.add(new Teacher("wangwu", 3)); treeSet.add(new Teacher("mazi", 3)); System.out.println(treeSet);//直接输出 Iterator itTSet = treeSet.iterator();//遍历输出 while(itTSet.hasNext()) System.out.print(itTSet.next() + "\t"); System.out.println(); } }输出结果为:
[学号:1 姓名:lisi, 学号:2 姓名:zhangsan, 学号:3 姓名:mazi, 学号:3 姓名:wangwu] 学号:1 姓名:lisi 学号:2 姓名:zhangsan 学号:3 姓名:mazi 学号:3 姓名:wangwu
相关文章推荐
- spring---注解@Resource和@Autowired
- Spring mvc 视图解析器 ContentNegotiatingViewResolver 源码分析
- springmvc之interceptor(拦截器)
- struts1.3.10手动部署过程
- java基础---->java中Properties的使用
- springamqp的exchange
- 关于Eclipse开发环境中编译器的设置
- Java WebService 简单实例
- Spring技术内幕之Spring MVC与Web环境(01)-MVC模式
- Java单例模式深入详解
- Java:单例模式的七种写法
- JAVA集合类概述
- springMVC4.0返回json数据的问题
- Eclipse如何修改工程名及包名
- java异步计算-Future使用
- 简单代理模式 JAVA
- 349IntersectionofTwoArrays.java
- java 配置security policy
- 左连接查询优化
- Spring源码解读-Spring IoC容器初始化之资源定位