java日常学习:TreeSet
来源:互联网 发布:linux curl post body 编辑:程序博客网 时间:2024/06/05 08:11
java代码块
TreeSet
集合系统:
———–| Collection 单列集合的根接口
—————-| List 如果是实现了List接口的集合类,具备的特点:有序,元素可重复。
——————–| ArrayList 底层是使用了一个Object数组实现的, 特点:查询速度快,增删速度慢。
——————–| LinkedList 底层是使用了链表数据结构实现的,特点:查询速度慢, 增删快。
——————–| Vector(了解) Vector 底层也是使用了Object数组实现的, 是线程安全的,操作效率低。
—————-| Set 如果是实现了Set接口的集合类, 具备的特点: 无序,元素不可重复。
——————–| HashSet 底层是使用了一个哈希表实现的,特点: 存取速度快。
——————–| TreeSet 底层是使用了红黑树(二叉树)数据结构实现 , 特点:可以对元素进行排序存储。
TreeSet 要注意的事项:
1. 如果往TreeSet添加元素的时候,如果元素本身具备自然顺序的特性,那么treeSet就会按照元素自然顺序的特性进行排序存储。
2. 如果往TreeSet添加元素的时候, 如果元素本身不具备自然顺序的特性, 那么元素所属的类就必须要实现Comparable接口,把元素的比较规则定义在compareTo(T o)方法上。
3. 在TreeSet中如果比较的方法返回的是0,该元素则被视为重复元素,不允许添加。
4. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而且元素所属的类没有实现Comparable接口,那么在创建TreeSet对象 的时候就必须要传入一个比较器对象。
TreeSet 要注意的事项:
1. 往TreeSet添加元素的时候,如果元素本身具备自然顺序的特性,那么treeSet就会按照元素自然顺序的特性进行排序存储。
2. 往TreeSet添加元素的时候, 如果元素本身不具备自然顺序的特性, 那么元素所属的类就必须要实现Comparable接口,把元素的比较规则定义在compareTo(T o)方法上。
3. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而且元素所属的类没有实现Comparable接口,那么在创建TreeSet对象 的时候就必须要传入一个比较器对象。
4. 如果元素已经实现了Comparable接口,当时创建TreeSet对象的时候又传入了比较器对象,那么比较规则优先使用比较器的。
推荐使用: 比较器。
疑问:如何创建一个比较器对象:
比较器的创建格式: class 类名 implements Comparator{ }
练习一
//比较器的使用class Emp implements Comparable { String name; int age; double salary; public Emp(String name, int age, double salary) { this.name = name; this.age = age; this.salary = salary; } @Override public String toString() { return "{ 姓名:"+ this.name+" 年龄:"+ this.age+ " 薪水:"+this.salary+"}"; } /* * 元素与元素之间的比较规则定义在COmparaTo方法上。(non-Javadoc) 返回值:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。 */ @Override // 100.52 - 100.32 = 0.2 public int compareTo(Emp e) { return (int)((this.salary-e.salary)*100); }}//自定义一个比较器类class AgeComparator implements Comparator<Emp>{ @Override public int compare(Emp o1, Emp o2) { return o1.age-o2.age; }}public class Demo1 { public static void main(String[] args) { //创建一个比较器对象 AgeComparator ageComparator = new AgeComparator(); TreeSet tree = new TreeSet(ageComparator); tree.add(new Emp("大毛",6,200)); tree.add(new Emp("小毛",5,100)); tree.add(new Emp("二狗",8,300)); tree.add(new Emp("狗子",3,500)); System.out.println(tree); }}
练习二
//例如String str="8 10 25 5 3 7"; 要求使用TreeSet对象把字符串拼接成如下格式: "3 5 7 8 10 25" package day05_test;import java.util.Iterator;import java.util.TreeSet;public class Demo5 { public static void main(String[] args) { // TODO Auto-generated method stub String string = "8 10 25 5 3 7"; System.out.println("排序后的字符串是:" + sortString(string)); } public static String sortString(String str) { TreeSet treeSet = new TreeSet(); String[] datas = str.split(" "); for (int i = 0; i < datas.length; i++) { int num = Integer.parseInt(datas[i]); treeSet.add(num); } StringBuilder stringBuilder = new StringBuilder(); Iterator iterator = treeSet.iterator(); while (iterator.hasNext()) { stringBuilder.append(iterator.next() + " "); } return stringBuilder.toString(); }}
用于平时自己复习回顾,如有错误,欢迎指正
个人微信号:yxx85561498,欢迎一起学习交流,努力进步
- java日常学习:TreeSet
- java TreeSet 学习
- 学习日记java TreeSet
- Java学习之TreeSet
- java中TreeSet学习
- java HashSet / TreeSet 学习
- Java 集合学习<2>TreeSet
- java日常学习:继承
- java日常学习:多态
- java日常学习:泛型
- java.util.Set,HashSet,TreeSet学习
- JAVA学习笔记7 Hashset ,TreeSet , HashMap
- java学习笔记:集合框架之TreeSet
- java学习笔记:集合框架之TreeSet
- TreeSet类学习 java疯狂讲义
- Java集合深入学习--HashSet与TreeSet
- 深入Java集合学习系列:TreeSet 详解
- 深入学习java集合:TreeSet<E>实现
- [FireBug Lite 集成 Cent Browser Java开发]
- 设计模式之禅8
- Skynet基础入门例子详解(2)
- 微机原理成绩分级
- 3.1 计算并联电阻的阻值
- java日常学习:TreeSet
- 微机原理银行系统
- CodeForces 888C Dominant Character
- oracle SQL语句取本周本月本年的数据
- Contruct2游戏进阶教程
- Skynet基础入门例子详解(6)
- Leetcode-Maximum Subarray
- 高泽龙:释放租赁红利,中国长租公寓行业创新模式探讨和分析
- 解决字体图标,图片无法垂直居中的问题,屡试不爽