文档章节

Java集合框架之规则集

YH_猿员猿
 YH_猿员猿
发布于 2016/07/21 17:32
字数 604
阅读 64
收藏 0
    规则集是用于存储一组不重复的元素的集合。规则集Set接口是对Collection接口的一种扩充,它没有引入新的方法和变量,只是规定了Set的实例不包含重复的元素。
    Set接口有3个具体的实现类:散列类HashSet,链式散列类LinkedHashSet和树形类TreeSet。

散列集HashSet

    HashSet类是一个用于实现Set接口的具体类,它可以使用无参构造方法创建,也可以由一个现有的集合创建散列集。

客座率:是在测量在增加规则集的容量之前,该规则集的饱满程度。当元素数量超过了规则集的饱满程度,容量就会翻倍。默认为容量16,客座率0.75.

    考虑到效率问题,添加到散列集中的对象必须以一种正确的分散散列码的方式实现HashCode方法。

HashCode:Object类中定义的一种方法,作用是对集合中象间的比较提高效率,它通过一种特俗的函数运算,将集合中的对象映射到一组数值上,相同的对象一定有相同的Code值,不同的对象可能有相同的散列码,我们在用方法进行比较。以此提高效率。

public class TestHashSet {
    //create a hash set
    public static void main(String[] args){
        Set<String> s = new HashSet<String>();
        //Add Strings to the set
        s.add("London");
        s.add("Paris");
        s.add("New York");
        s.add("London");

        System.out.println(s);

        //迭代器
// Iterator<String> inIterator = s.iterator();
// while(inIterator.hasNext()){
// System.out.println(inIterator.next().toUpperCase()+" ");
// }

        for(Object element:s){
            System.out.println(element);
        }       
    }
}

这个程序中添加了两次London,但只要一个会被存储。因为规则集中不允许有重复的元素。HashSet是没有顺序的。

for-each循环可用于Collection的任何实例上。

链式散列表LinkedHashSet

    它扩展了HashSet,支持对规则集的元素进行排序,它可以按照插入规则集的顺序提取。

如果不需要维护元素被插入的顺序,应使用HashSet。

树形TreeSet

    SortedSet是set的一个子接口,它可以确保规则集中的元素是有序的,它提供了两个方法first()和last()来返回第一个和最后一个元素,以及方法headSet(t)和tailSet(f)以返回小于t和大于或等于f的那一部分。
    NavigableSet扩展了SortedSet,它又提供了导航方式而TreeSet

本文转载自:http://blog.csdn.net/yin569258/article/details/50812662

共有 人打赏支持
YH_猿员猿
粉丝 0
博文 12
码字总数 0
作品 0
徐汇
程序员
Java虚拟机JVM内部体系结构

Java虚拟机JVM内部体系结构 易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。 JVM(Java虚拟机)是一个抽象...

LYQ1990
07/18
0
0
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
0
0
构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

enosh
2015/01/09
0
2
每个项目中,你必须知道的11个Java第三方类库。

Java第三方library ecosystem是一个很广阔的范畴。不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库。 单元测试 1.DBUnit DBunit是一个基于junit扩展的数据库测试框架。它提供了...

thinkyoung
2015/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法 set:function(key,val,time){ var date = new Date(); //获取当前时间 var expiresDays = time; //将date设置为n天以后的时间...

小丶二
3分钟前
0
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
5分钟前
0
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
7分钟前
0
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
15分钟前
0
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部