Collection接口和Set接口对比与解析。

导语:越是接触更多新的知识,就发现旧的知识假若不扎实,便会影响到新的学习,在此重新回顾一下集合的概念。(小菜鸟写的,大神绕路。字有点多,加红的为重点。)

结尾处有对应Word文档下载,里面有简单的例子说明以上的知识点。

1. 集合

1.1. 什么是集合 

存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。

集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。(简单来说就是存放对象的容器,但比数组要好得多,因为长度可以变化,提供多种方法


1.1. 集合和数组的区别

数组和集合类都是容器:

数组长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象数组中存储数据类型是单一的,集合中可以存储任意类型的对象。

集合类的特点:

用于存储对象,长度是可变的,可以存储不同类型的对象。

 

1.1.1. 数组的缺点

存储类型单一的数据容器,操作复杂(数组一旦声明好不可变)(即不好进行CURD,也就是增删查改)

 

1.2. 集合的分类

集合能做什么:

1:将对象添加到集合

2:从集合中删除对象

3: 从集合中查找一个对象

4:从集合中修改一个对象就是增删改查

注意:集合和数组中存放的都是对象的引用而非对象本身

题外话: Java工程师对不同的容器进行了定义,虽然容器不同,但是还是有一些共性可以抽取最后抽取了一个顶层接口,那么就形成了一个集合框架。如何学习呢?当然是从顶层学起,顶层里边具有最共性,最基本的行为。具体的使用,就要选择具体的容器了。为什么? 因为不断向上抽取的东西有可能是不能创建对象的.抽象的可能性很大,并且子类对象的方法更多一些. 所以是看顶层,创建底层。那么集合的顶层是什么呢 叫做Collection

集合框架体系(一开始看这个图头都炸了,学完再回来看就好了。)


每一个容器对数据的存储方式不同,这种存储方式称之为数据结构(data structure

常用集合的树状分类:

---|Collection: 单列集合

---|List: 有存储顺序, 可重复

---|ArrayList: 数组实现, 查找快, 增删慢(由于是数组实现在增和删的时候会牵扯到数组增容以及拷贝元素所以慢。数组是可以直接按索引查    找所以查找时较快

  ---|LinkedList: 链表实现, 增删快, 查找慢(由于链表实现增加时只要让前一个元素记住自己就可以删除时让前一个元素记住后一个元后一个元    素记住前一个元素这样的增删效率较高但查询时需要一个一个的遍历所以效率较低

                      ---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低ArrayList实现方式相同, 但考虑了线程安全问, 所以效率略低

---|Set: 无存储顺序, 不可重复

---|HashSet

---|TreeSet

---|LinkedHashSet

---| Map: 键值对(双列集合)

---|HashMap

---|TreeMap

---|HashTable

---|LinkedHashMap

 

1.4什么时候该使用什么样的集合

Collection

我们需要保存若干个对象的时候使用集合。

 

List

 

 

如果我们需要保留存储顺序, 并且保留重复元素, 使用List.

如果查询较多, 那么使用ArrayList

如果存取较多, 那么使用LinkedList

如果需要线程安全, 那么使用Vector

 

 

Set

 

如果我们不需要保留存储顺序, 并且需要去掉重复元素, 使用Set.

如果我们需要将元素排序, 那么使用TreeSet

如果我们不需要排序, 使用HashSet, HashSet比

TreeSet效率高.

如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet

2. 集合类(Collection)  

说完集合的概念和使用的选择,下面来回忆一下集合的接口Collection

Collection接口有两个子接口:

List(链表|线性表) 可存放重复元素,元素存取是有序的

Set()  不可以存放重复元素,元素存取是无序的

Collection特点:

Collection中描述的是集合共有的功能(CRUD)


学习集合对象 :

学习Collection中的共性方法,多个容器在不断向上抽取就出现了该体系。发现Collection

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值