一天一个类,一点也不累之TreeSet
一天一个类,一点也不累。

现在要说的是---TreeSet
public class TreeSet<E>
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable
说句实话自己没怎么用过这个*_*
--》A NavigableSet implementation based on a TreeMap. The elements are ordered using their natural ordering, or by a Comparator provided at set creation time, depending on which constructor is used.
如上,TreeSet实现了NavigableSet,这就要求元素是按照自然顺序来排序的或者使用Comparator比较器来实现
--》This implementation provides guaranteed log(n) time cost for the basic operations (add, remove and contains).
像上面说的一些基本操作他们的时间复杂度在Log(n)
--》Note that this implementation is not synchronized
还是这句话,他也是非线程安全的。
感谢!!~~ 同样给我们提供了线程安全的方式:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
【TreeSet的内部实现也是使用TreeMap来实现的】
1、构造方法:
他提供了很多种的构造方法
public TreeSet();
public TreeSet(Comparator<? super E> comparator);
public TreeSet(Collection<? extends E> c)
public TreeSet(SortedSet<E> s)
2、迭代器
是否大家还记得LinkedList提供了一种倒序迭代器。同样TreeSet也提供了。
public Iterator<E> iterator() {
return m.navigableKeySet().iterator();
}
由于在TreeSet中维护这一个NavigableSet m,所有迭代器的返回只使用了他的KeySet的迭代器。
3、一些特殊的使用方法:
public E first() {
return m.firstKey();
} 获取第一个元素
同样也有获取最后一个元素last()
public E lower(E e) {
return m.lowerKey(e);
}
获取比e小的最接近的元素。
public E floor(E e) {
return m.floorKey(e);
}
获取大于或者等于e的最小元素
与之相对的ceiling
与lower相对的是higher
想要学好这个类首先要了解NavigableSet
一天一个类,一点也不累之TreeSet的更多相关文章
- 一天一个类,一点也不累 之 Set接口
我们的口号是:一天一个类,一点也不累-- 再次回忆一下集合相关的类图. 官方API上这样介绍这个接口: A collection that contains no duplicate elements ...
- 一天一个类,一点也不累 之 LinkedList
我们的口号是,一天一个类,一点也不累 .. 今天要讲的是---LinkedList 首先,还是看看他的组织结构 Class LinkedList<E> java.lang.Object j ...
- 一天一个类,一点也不累 之 Vector
一天一个类,一点也不累. 今天要说的是ArrayList的亲兄弟--Vector 亲兄弟?看看“族谱” Class Vector<E> java.lang.Object java.util ...
- 一天一个类,一点也不累之HashSet
最近忙着一个小项目结题,故没能按时完成[一天一个类,一点也不累],还好项目优秀,算是对自己一点点的安慰和鼓励.~~~ 今天要说的是HashSet 既然是继承自Set,那么就必须有Set的一些属性,比如 ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- java: Set类及子类:TreeSet有序子类,HashSet无序子类:重复元素
Set类及子类: TreeSet有序子类: HashSet无序(散列)子类 HashSet子类的内容是没有顺序的,单个元素也不会重复的(对象除外). Set<String> allSet ...
- java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)
当我们知道一个类的对象,或者知道一个类的路径,或者指导这个类的名称的时候我们可以获取到这个类的类对象 当我们仅仅知道一个类的类对象的时候我们依然无法操作这个类,因为我们不知道这个类的属性,类的方法.那 ...
- Java中是否可以调用一个类中的main方法?
前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...
- [转]自己写PHP扩展之创建一个类
原文:http://www.imsiren.com/archives/572 比如我们要创建一个类..PHP代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
随机推荐
- hdu 4739 Zhuge Liang's Mines (简单dfs)
Zhuge Liang's Mines Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Swift调用Objective C的FrameWork
很多Github的库经过很多年的发展,源码都是OC写的,,所以,用Swift调用OC的库就是开发中难免遇到的的一个问题,本文以AFNetworking为例,讲解如何跨语言调用. 第一步 创建一个空的工 ...
- GDB调试之暂停
暂停机制: 有3种方式可以通知GDB暂停程序的执行. a.断点: 通知GDB在程序中的特定位置暂停执行: b.监视点:通知GDB当特定内存位置(或者涉及一个或多个位置的表达式)的值发生变化时暂停执行: ...
- 前端笔试面试中的常用知识点总结(CSS)
1.CSS选择器的优先级!important > 内联 > id选择器 > 类选择器 > 标签选择器多个类选择器叠加(256)之后的优先级大于一个id选择器!importan ...
- js 获取星期
var week; if (new Date().getDay() == 0) week = "星期日"; if (new Date() ...
- if语句之猜拳
用计算机来生成随机数: Random rand = new Random();//做一个随机生成器,Random();后面的括号里面可以放一个随机生成器种子,这个种子只能为整数(int)int n = ...
- 在Office Outlook 2013中收发QQ邮件
选择手动配置 选择第三项 点击More Settings,在Outgoing Server 勾选 如下 确认后,按下一步完成配置,此时会弹出对话框进行邮件发送测试.
- Spring boot实现数据库读写分离
背景 数据库配置主从之后,如何在代码层面实现读写分离? 用户自定义设置数据库路由 Spring boot提供了AbstractRoutingDataSource根据用户定义的规则选择当前的数据库,这样 ...
- [Jobdu] 题目1516 : 调整数组顺序使奇数位于偶数前面
void diffOddAndEven(int a[], int n) { , high = n - ; int pivot; while (low < high) { == && ...
- js 几个特殊情况
alert(033-15);//12,前缀0用在直接量中,表示八进制 alert('033'-15);//18,前缀0用在字符串中,在(隐式)转换将忽略 alert(parseInt('033')-1 ...