文档章节

Java集合框架之规则集

YH_猿员猿
 YH_猿员猿
发布于 2016/07/21 17:32
字数 604
阅读 67
收藏 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
徐汇
程序员
私信 提问
myBatis源码流程分析记录

作者: 一字马胡 mybatis主要组件 SqlSession:是mybatis提供的面向开发者的框架底层API,开发者通过获取一个是sqlSession实例来进行具体的数据库增删改查操作 Executor:mybatis的执行器,用...

疼蛋之丸
2018/10/22
0
0
MyBatis源码窥探:MyBatis整体架构解析

Mybatis的使用这里就不介绍了,不知道怎么使用的朋友可以点击 http://www.mybatis.org/mybatis-3/zh/index.html 这里面的教程很详细,包括xml的配置、映射、动态sql都有介绍,可以学习和使用...

java邵先生
01/15
0
0
08《Java核心技术》之Vector、ArrayList、LinkedList有何区别?

一、提出问题 我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我们最早接触到的 C 语言,需要自己实现很多基础数据结构,管理和操...

飞鱼说编程
2018/10/11
33
0
Hashtable 为什么不叫 HashTable?

前几天在写《HashMap 和 Hashtable 的 6 个区别》这篇文章的时候,差点把 Hashtable 写成了 HashTable,后来看源码证实了是:Hashtable,小写的 "t"able,不符合驼峰命名规则。 什么是驼峰命...

Java技术栈
2018/12/10
48
1
Apache Calcite官方文档中文版-概览-1.背景

第一部分 概览 1. 背景   Apache Calcite是一个动态数据管理框架。它包含了许多组成典型数据管理系统的经典模块,但省略了一些关键×××: 数据存储,数据处理算法和元数据存储库。   C...

Lynn_Yuan
2018/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
6
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部