Java集合框架复习之规则集Set-TreeSet(五)
2016-04-11 21:03
295 查看
在开发文档上,可以看到TreeSet所有已实现的接口:
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>,SortedSet<E>
在里面有NavigableSet<E>和SortedSet<E>,通过开发文档,又发现NavigableSet接口是扩展了SortedSet接口,再找SortedSet接口,发现它实现了Set接口。
1.先看SortedSet:
进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。
2.NavigableSet
扩展了SortedSet,并提供一些导航方法lower(e),floor(e),ceiling(e)和higher(e)以分别返回小于,小于或等于,大于或等于以及大于一个给定元素的元素,如果没有这样的元素,返回null。方法pollFirst()和pollLast()会分别删除和返回树形集中的第一个元素和最后一个元素。
3.TreeSet
只要对象是可以互相比较的,就可以将它们添加到一个树形集中。
两种比较对象的方法
(1)使用Comparable接口。compareTo方法
(2)如果类的元素没有实现Comparable的接口,或者不想用compareTo方法进行比较,可以指定一个比较器。
4.比较器接口Comparator,它的两个方法,compare和equals
注意一下equals方法的特殊
(1)public int compare(Object element1,Object element2) 如果element1小于element2,就返回一个负值,如果element1大于element2,就返回一个正值,若相等,放回0
(2)public boolean equals(Object element) 如果指定的对象也是一个比较器,并且与这个比较器具有相同排序,则返回true
5.定义一个比较器,实现Comparator接口和Serializable接口
实现Serializable可以被用作像TreeSet这样的可序列化数据接口的排序方法,为了使数据结构能成功序列化,比较器必须提供Serializable接口
public class classnameComparator implements Comparator<People> ,java.io.Serializable{
......
}
如果使用TreeSet的无参构造方法,而且元素的类实现了Comparable接口,那么可以用compareTo方法来比较集合内的两个元素。
如果要使用比较器,必须使用TreeSet(Comparator comparator)创建一个有序集,它能使用比较器中的compare方法对集合内的元素进行比较
Set<classname> set=new TreeSet<classname>(new classnameComparator());
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>,SortedSet<E>
在里面有NavigableSet<E>和SortedSet<E>,通过开发文档,又发现NavigableSet接口是扩展了SortedSet接口,再找SortedSet接口,发现它实现了Set接口。
1.先看SortedSet:
进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。
Comparator<? superE> | comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回null。 |
E | first() 返回此 set 中当前第一个(最低)元素。 |
SortedSet<E> | headSet(E toElement) 返回此 set 的部分视图,其元素严格小于 toElement。 |
E | last() 返回此 set 中当前最后一个(最高)元素。 |
SortedSet<E> | subSet(E fromElement,E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。 |
SortedSet<E> | tailSet(E fromElement) 返回此 set 的部分视图,其元素大于等于 fromElement。 |
扩展了SortedSet,并提供一些导航方法lower(e),floor(e),ceiling(e)和higher(e)以分别返回小于,小于或等于,大于或等于以及大于一个给定元素的元素,如果没有这样的元素,返回null。方法pollFirst()和pollLast()会分别删除和返回树形集中的第一个元素和最后一个元素。
3.TreeSet
只要对象是可以互相比较的,就可以将它们添加到一个树形集中。
两种比较对象的方法
(1)使用Comparable接口。compareTo方法
(2)如果类的元素没有实现Comparable的接口,或者不想用compareTo方法进行比较,可以指定一个比较器。
4.比较器接口Comparator,它的两个方法,compare和equals
注意一下equals方法的特殊
(1)public int compare(Object element1,Object element2) 如果element1小于element2,就返回一个负值,如果element1大于element2,就返回一个正值,若相等,放回0
(2)public boolean equals(Object element) 如果指定的对象也是一个比较器,并且与这个比较器具有相同排序,则返回true
5.定义一个比较器,实现Comparator接口和Serializable接口
实现Serializable可以被用作像TreeSet这样的可序列化数据接口的排序方法,为了使数据结构能成功序列化,比较器必须提供Serializable接口
public class classnameComparator implements Comparator<People> ,java.io.Serializable{
......
}
如果使用TreeSet的无参构造方法,而且元素的类实现了Comparable接口,那么可以用compareTo方法来比较集合内的两个元素。
如果要使用比较器,必须使用TreeSet(Comparator comparator)创建一个有序集,它能使用比较器中的compare方法对集合内的元素进行比较
Set<classname> set=new TreeSet<classname>(new classnameComparator());
相关文章推荐
- 使用IntelliJ IDEA开发SpringMVC网站
- 一天一个Java基础——数组
- spring@value注入spel表达式
- JAVA大作业 - 五道三星题
- 让 SpringMVC 接收多个对象的4种方法
- java 获取日期
- spring schema介绍
- Java集合框架复习之规则集Set-LinkedHashSet(四)
- Java运行环境的搭建
- java日常随笔20160411
- SpringMVC工作原理
- java 判断从0到n的二进制中‘1’的个数并返回数组
- springside4项目源码研读(1)
- Spring整合的Hibernate的框架中,HibernateTemplate、SessionFactory和Session之间的关系
- springmvc 常用的绑定参数用法
- java 连接Access数据库
- 运维调试记录:Ubuntu下通过PPA方式安装Java 8并自动配置环境变量
- spring security:自定义认证成功处理器
- 码农小汪-spring框架学习之6-spring基于注解的容器配置 @Qualifier @Autowired @Resouce @PostConstruct @PreDestroy
- springmvc 相应静态资源,view-controler-path