规则集之探究何时使用HashSet、LinkedHashSet以及TreeSet?
前言
Java集合框架三种主要类型的集合:规则集(Set)、线性表(List)、队列(Queue)。Set用来存储不可重复的元素;List用来存储有元素构成的有序的集合;而Queue则用于存储用先进先出处理的对象。
Set接口的三个具体类包括:散列集HashSet、链式散列集LinkedHashSet、树形集TreeSet。
本章节,主要讲解何时使用HashSet、LinkedHashSet以及TreeSet较为最佳。
HashSet
HashSet可以用来存储互不相同的元素。考虑到效率的因素,添加到HashSet中的对象必须实现hashCode()方法。往HashSet中存储元素时,元素并不会按照被插入时的顺序存储,原因是因为HashSet中的元素没有特定的顺序。
如若要强制有顺序,此时,就需要LinkedHashSet上场了。如果不需要维护元素被插入的顺序,就是你使用HashSet的大好时机,因为它会比LinkedHashSet更加的高效。
LinkedHashSet
LinkedHashSet是通过用一个链表的实现来扩展HashSet,从而支持了对HashSet中的元素的排序。所以LinkedHashSet可以按照元素插入时的顺序进行提取。
TreeSet
当需要一个排好序的集合的时候,就可以从这个散列集中创建一个树形集。
规则集之探究何时使用HashSet、LinkedHashSet以及TreeSet?的更多相关文章
- HashSet、LinkedHashSet、TreeSet
以下内容基于jdk1.7.0_79源码: 关于HashSet.LinkedHashSet.TreeSet Set接口的实现类,最大特点是不允许出现重复元素: HashSet:基于HashMap实现,一 ...
- Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- 一、集合框架(关于ArrayList,LinkedList,HashSet,LinkedHashSet,TreeSet)
一.ArrayList 解决了数组的局限性,最常见的容器类,ArrayList容器的容量capacity会随着对象的增加,自动增长.不会出现数组边界的问题. package collection; ...
- 09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHashSet,TreeSet
09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHas ...
- java集合框架之几种set(HashSet LinkedHashSet TreeSet )
参考http://how2j.cn/k/collection/collection-sets/691.html#nowhere HashSet LinkedHashSet TreeSet HashSe ...
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别
本篇博客主要讲解Set接口的三个实现类HashSet.LinkedHashSet.TreeSet的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 1. HashSe ...
- Java中的集合HashSet、LinkedHashSet、TreeSet和EnumSet(二)
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合于Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- Java自学-集合框架 HashSet、LinkedHashSet、TreeSet之间的区别
HashSet. LinkedHashSet.TreeSet之间的区别 步骤 1 : HashSet LinkedHashSet TreeSet HashSet: 无序 LinkedHashSet: ...
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSet
Java 中的 Set 是非常常用的数据类型.Set 是无序的 Collection,Java Set 有三个常用的实现类,分别是:HashSet.LinkedHashSet.TreeSet 本文基于 ...
随机推荐
- 52. leetcode 96. Unique Binary Search Trees
96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...
- RSA简介(二)——模幂算法
RSA最终加密.解密都要用到模乘的幂运算,简称模幂运算. 回忆一下RSA,从明文A到B B=Ae1%N 对B解密,就是 A=Be2%N 其中,一般来说,加密公钥中的e1一般会比较小,取65537居多, ...
- ASP.NET 导出excel文件出现乱码的解决办法
string html =TABLE ;//<table>标签,可以是多张表string modified = Regex.Replace(html, "<table &g ...
- akoj-1076-Encoding
Encoding Time Limit:1000MS Memory Limit:65536K Total Submit:62 Accepted:35 Description Given a stri ...
- 初学IOS之TableView
PS:tableview作为IOS的UI界面的重点,今天我只学习一部分,在下文列出. 下文我以创建省份为例子,用纯代码的方式创建,但是并不是最优代码,仅作熟悉tableview的创建使用. ----- ...
- UVa 10934 Dropping water balloons:dp(递推)
题目链接:https://vjudge.net/problem/27377/origin 题意: 有一栋n层高的楼,并给你k个水球.在一定高度及以上将水球扔下,水球会摔破:在这个高度以下扔,水球不会摔 ...
- win7自动关机方法
远程操控电脑的时候&爬虫的时候所需2333 win+R输入cmd,进入cmd. 输入shutdown 然后输入shutdown -s -t 3600 设置3600秒(1小时)后关机,大家可以根 ...
- java核心技术之流与文件
InputStream和OutputStream构成了输入/输出类层次结构的基础.用于按字节进行读写.而与之处在同一等级的Reader/Writer同样作为抽象类定义了用于对字符进行读取的类层次结构, ...
- C# 实例练习(第二天)
实例练习 1. 完成简单登录效果,设置用户登录账号密码,清空控制台,进入登录页面,请求用户输入账号.密码和验证码(随机产生),并判断用户输入的信息,给出相应的提示. C#代码如下: 主要知识点: (1 ...
- Html中<Hr>标签、样式的使用和自定义设置
<Hr>标签中样式的使用和自定义设置... -------------------- ====================== 已经测试过了可以用的Hr样式: <!--这是一部分 ...