文档章节

Collection 的两个子集Set 和 List

JasonHo
 JasonHo
发布于 2014/05/05 22:07
字数 865
阅读 46
收藏 0

Collection
List列表)
特点:

1,有序(存储元素的顺序和取出元素的顺序一致)

2,该集合中的元素都有索引,所以可以通过索引(角标)来访问元素。 
3,它以存储重复元素。     


常见子类对象:记住:具体的子类对象,我们要学习应该是该对象的特有的数据结构,以及相关的特点。
Vector:jdk1.0就存在了,底层是数组结构的,可变长度数组。原理:一旦原数组长度不够,会创建新数组将原数组的元素复制到新数组中,并将新元素添加到新数组中。Vector是同步的。
ArrayList:底层是数组结构,也是支持长度可变数组的,是不同步的。替代了Vector.因为效率高。 查询效率很高。 但是增删的效率很低。

LinkedList:底层是链接列表结构,简称链表结构。是不同步的。这个中结构的好处:对元素的增删非常效很高。 查询的效率很低。

  
Set集)

中的方法和Collection一致,只要重点注意它的子类对象即可。取出元素只能使用迭代器。
特点:
1,不可包含重复元素。(最大的特点)
2,这个集合存入元素的顺序和取出元素的顺序不一定一致。(具体的容器对象数据结构不同,顺序也有不同)


HashSet:底层数据结构是哈希表,不保证顺序,是不同步的。

哈希表:提供数组的查询效率而出现的。

将要存储的元素先通过哈希算法算出一个哈希值来标识存储的位置,代表着元素。要找元素时,先该元素通过哈希算法算出哈希值,在通过哈希值到哈希表中去查找。

特点:
1,不关系元素的顺序。
2,提高了查询效率。
3,不可能出现重复元素,因为哈希值都不同。即使相同,会再次判断两个元素的equals,内容是否相同。
如果内容也相同,不存,如果内容不同,存储。
所以哈希表要保证元素的唯一性,必须要依赖于两个方法。
1,hashCode
2,equals    
TreeSet:可以给Set集合中的元素进行指定顺序的排序,非同步的。 默认情况下,是通过元素的自然顺序的序。它保证元素唯一性的依据是看比较方法的返回结果是否是0.是0.就视为元素相同。不存。
TreeSet排序的方式一:让元素自身具备比较性,需要实现Comparable接口,覆盖compareTo方法。
这种比较方式成为自然顺序排序。
如果元素自身不具备比较性或者具备的比较性(自然顺序)不是所需要的,这时只能用第二种方式 。
TreeSet排序的方式二:让容器自身具备比较性。容器一初始化就具备了比较功能。因为容器时在对构造时完成的。通过查阅,有一个构造方法TreeSet(Comparator),在容器初始化时可以指定一个比较                 器。 需要实现Comparator接口,覆盖compare方法即可。所以这种方式成为比较器排序。 

如抉择:

当存入的的对象有重复时,用List,没有重复元素时,用Set。


本文转载自:

JasonHo
粉丝 0
博文 11
码字总数 4064
作品 0
广州
程序员
私信 提问
Java核心(四)你不知道的数据集合

导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧! Java中的集合通常指的是Collection下的三个集合框架List、Set、Q...

王磊的博客
2018/11/28
93
0
Java集合系列之Connection与Map接口宏观把控

Java集合系列之Connection与Map接口宏观把控 Hello,大家好,元旦快到了,这里提前祝大家元旦快乐,出行注意安全,回家的小伙伴能早日和家人见面,开开心心过元旦。Ok,切入主题,这篇文章,我...

2017/12/29
0
0
3、Java基础复习----集合 Collection、List

1.容器 Java 所提供的一系列类的实例,用于在程序中存放对象 java.util Collection Interface List interface (有序可重复) Set interface(无序不可重复) public boolean add(E e);添加一个对...

baibuxiha
2016/01/20
30
1
求数组的子集(含重复)Subsets II

问题: Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: The solution set must not contain duplicate subsets. For example, I......

叶枫啦啦
2017/09/17
8
0
java集合框架总结(四)

一、java.util.List List 接口继承了 Collection 接口以定义一个允许重复项的有序集合。该接口不但能够对列 表的一部分进行处理,还添加了面向位置的操作。 (1) 面向位置的操作包括插入某个元...

hapier
2016/09/05
85
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
5
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
10
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
昨天
8
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部