集合Collection总览
前言
声明,本文使用的是JDK1.8
从今天开始正式去学习Java基础中最重要的东西--->集合
无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的资料,下面未必就做到日更了...
当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~
一、集合(Collection)介绍
1.1为什么需要Collection
- Java是一门面向对象的语言,就免不了处理对象
- 为了方便操作多个对象,那么我们就得把这多个对象存储起来
- 想要存储多个对象(变量),很容易就能想到一个容器
- 常用的容器我们知道有-->StringBuffered,数组(虽然有对象数组,但是数组的长度是不可变的!)
- 所以,Java就为我们提供了集合(Collection)~
1.2数组和集合的区别
接下来,我们可以对数组和集合的区别来分析一下:
数组和集合的区别:
- 1:长度的区别
- 数组的长度固定
- 集合的长度可变
- 2:内容不容
- 数组存储的是同一种类型的元素
- 集合可以存储不同类型的元素(但是一般我们不这样干..)
- 3:元素的数据类型
- 数组可以存储基本数据类型,也可以存储引用类型
- 集合只能存储引用类型(你存储的是简单的int,它会自动装箱成Integer)
1.3Collection的由来与功能
Collection的由来:
- 集合可以存储多个元素,但我们对多个元素也有不同的需求
- 多个元素,不能有相同的
- 多个元素,能够按照某个规则排序
- 针对不同的需求:java就提供了很多集合类,多个集合类的数据结构不同。但是,结构不重要,重要的是能够存储东西,能够判断,获取
- 把集合共性的内容不断往上提取,最终形成集合的继承体系---->Collection
Collection的大致结构体系是这样的:
但是,一般我们要掌握的并不需要那么多,只需要掌握一些常用的集合类就行了。下面我圈出来的那些:
再次精减:
Collection的基础功能:
二、迭代器(Iterator)介绍
我们可以发现Collection的源码中继承了Iterable,有iterator()这个方法...
点进去看了一下,Iterable是一个接口:
它有iterator()这个方法,返回的是Iterator
再来看一下,Iterator也是一个接口,它只有三个方法:
- hasNext()
- next()
- remove()
可是,我们没能找到对应的实现方法,只能往Collection的子类下找找了,于是我们找到了--->ArrayList(该类后面会说)
于是,我们在ArrayList下找到了iterator实现的身影:它是在ArrayList以内部类的方式实现的!并且,从源码可知:Iterator实际上就是在遍历集合
所以说:我们遍历集合(Collection)的元素都可以使用Iterator,至于它的具体实现是以内部类的方式实现的!
三、List集合介绍
从上面已经可以看到了,Collection主要学习集合的类型两种:Set和List,这里主要讲解List!
我们来看一下List接口的方法,比Collection多了一点点:
- List集合的特点就是:有序(存储顺序和取出顺序一致),可重复

Collection返回的是Iterator迭代器接口,而List中又有它自己对应的实现-->ListIterator接口
该接口比普通的Iterator接口多了几个方法:

从方法名就可以知道:ListIterator可以往前遍历,添加元素,设置元素
3.1List集合常用子类
List集合常用的子类有三个:
- ArrayList
- 底层数据结构是数组。线程不安全
- LinkedList
- 底层数据结构是链表。线程不安全
- Vector
- 底层数据结构是数组。线程安全
现在知道有三个常用的集合类即可,后面会开新的文章来讲解的~
四、Set集合介绍
从Set集合的方法我们可以看到:方法没有比Collection要多
- Set集合的特点是:元素不可重复

4.1Set集合常用子类
- HashSet集合
- A:底层数据结构是哈希表(是一个元素为链表的数组)
- TreeSet集合
- A:底层数据结构是红黑树(是一个自平衡的二叉树)
- B:保证元素的排序方式
- LinkedHashSet集合
- A::底层数据结构由哈希表和链表组成。
五、最后
本篇主要概括了Collection的要点,并没有深入去研究各种的集合类,该部分留到新开的章节去讲解,敬请期待~~
明天是清明节(回家),这两天是不更新集合的了,如果在家有空可能会刷几道算法题然后整理后会更新公众号~
文章的目录导航:https://zhongfucheng.bitcron.com/post/shou-ji/gong-zhong-hao-wen-zhang-zheng-li
参考资料:
- Core Java
- 数据结构与算法分析,Java语言描述
如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y
集合Collection总览的更多相关文章
- Scala之集合Collection
概述 Scala的集合类能够从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟载入集合 (Eager and delayed ev ...
- Guava库介绍之集合(Collection)相关的API
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
- 【再探backbone 02】集合-Collection
前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...
- 5、数组和集合--Collection、Map
一.数组:同一个类型数据的集合,其实他也是一个容器 1.数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些数据 2.数组的定义: 在Java中常见: 格式1: 类型 [] 数组名 = ne ...
- WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据
数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NE ...
- 在含有null值的复杂类的集合(Collection)中取最大值
在日常编程中,经常遇到要在一组复杂类的集合(Collection)中做比较.取最大值或最小值. 举个最简单的例子,我们要在一个如下结构的集合中选取包含最大值的元素: public class Clas ...
- java中集合Collection转list对象
参考:java中集合Collection转list对象 首先我的需求是获取到购物车列表,购物车列表是一个Map对象,构造方法获取购物项,这里购物项是Collection对象 // 购物项集合,K商品I ...
- java基础27 单例集合Collection及其常用方法
1.集合 集合是存储对象数据的集合容器 1.1.集合比数组的优势 1.集合可以存储任意类型的数据,数组只能存储同一种数据类型的数据 2.集合的长度是变化的,数组的长度是固定的 1.2.数组:存储 ...
- 18_java之集合Collection
01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList< ...
随机推荐
- Git基本命令 -- 创建Git项目
在这里下载git:https://git-scm.com/ 安装的时候, 如果是windows系统的话, 可以勾选unix的命令行工具, 这样在windows命令行下会多出很多命令, 例如ls. Gi ...
- C# 委托Delegate的使用 笔记
使用delegate总是一头雾水,记录一下笔记,备忘. 主要用于线程间操作UI上的控件,以便使用.或者是大家统一操作入口使用. using System.Windows.Forms; namespac ...
- EasyUI Parser 解析器
Parser(解析器)应用场景 1,自动调用parser 只要我们书写相应的class,easyui就能成功的渲染页面,这是因为解析器在默认情况下,会在dom加载完成的时候($(docunment). ...
- MMORPG中的相机跟随算法
先上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Cam ...
- centos7的服务管理
1,启动服务(每条都可以)systemctl start httpdsystemctl start httpd.serviceservice httpd start 2,停止服务systemctl s ...
- bat脚本:windows下一键启动zookeeper+kafka
bat脚本:windows下一键启动zookeeper+kafka 把下面两行代码存为bat文件,双击执行即可.注意更改相应的目录 这里用ping来控制时间(先zookeeper,ping 4 次后 ...
- 1-6 hibernate映射集合属性
1.集合类框架 以Tree开头都是按顺序,默认情况下是升序排列. 以Linked 开头的都是按插入顺序排列的. 2.在hibernate中要持久化集合属性时必须将其声明为接口,如 private Se ...
- 自己动手写泛型dao
在经过一系列的问题得到解决之后,泛型dao终于写出来了.泛型dao相比于以前写的dao最大的好处就是,大大提高了代码的复用性,以往我们要对数据库中表中的数据进行操作的时候,每张表都需要写一个dao来操 ...
- Dubbo源码-从HelloWorld开始
Dubbo简介 Dubbo,相信做后端的同学应该都用过,或者有所耳闻.没错,我就是那个有所耳闻中的一员. 公司在好几年前实现了一套自己的RPC框架,所以也就没有机会使用市面上琳琅满目的RPC框架产品. ...
- Oracle/Hive/Impala SQL比较1
5 Function 指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大. 5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 ...