JAVA 集合 一

集合的由来

通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。

集合是什么?

Java集合类存放在java.util包中,是一个用来存放对象的容器。

注意 :

1 集合只能存放对象,基本类型存入自动转为封装类型,

2 集合存放的都是对象的引用,而非对象的本身,所以我们称集合的对象就是集合中对象的引用。对象本身还是存放在堆内存中

Java集合框架

发现一个特点,上述所有的集合类,除了map系列的集合,即左边的集合都实现了Iterator接口。Iterator是一个用来遍历集合中元素的接口,主要有hashNext(),next(),remove()三种方法。它的子接口ListIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。

从图中我们可以看到:

  1.集合主要分为Collection和Map两个接口。

  2.Collection又分别被List和Set继承。

  3.List被AbstractList实现,然后分为3个子类,ArrayList,LinkList和VectorList。

  4.Set被AbstractSet实现,又分为2个子类,HashSet和TreeSet。

  5.Map被AbstractMap实现,又分为2个子类,HashMap和TreeMap。

  6.Map被Hashtable实现。

Iterator迭代器

它是Java集合的顶层接口(不包括map系列的集合,Map接口是map系列集合的顶层接口)

Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型。
boolean hasNext():判断容器内是否还有可供访问的元素。
void remove():删除迭代器刚越过的元素。
所以除了map系列的集合,我么都能通过迭代器来对集合中的元素进行遍历。

Collection接口介绍

Collection的作用就是规定了一个集合有哪些基本的操作。

int size() 获取元素个数
boolean isEmpty() 是否个数为零
boolean contains(Object element) 是否包含指定元素
boolean add(E element) 添加元素,成功时返回true
boolean remove(Object element 删除元素,成功时返回true
Iterator<E> iterator() 获取迭代器

Set集合

Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。

List集合

List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素 。List集合默认按元素的添加顺序设置元素的索引,例如第一个添加的元素索引为0,第二个添加的元素索引为1......
List作为Collection接口的子接口,可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。

Queue集合

Queue用户模拟队列这种数据结构,队列通常是指“先进先出”(FIFO,first-in-first-out)的容器。队列的头部是在队列中存放时间最长的元素,队列的尾部是保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。

Map集合

Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。
如下图所描述,key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的value。

Map集合与Set集合、List集合的关系

1.与Set集合的关系
如果 把Map里的所有key放在一起看,它们就组成了一个Set集合(所有的key没有顺序,key与key之间不能重复),实际上Map确实包含了一个keySet()方法,用户返回Map里所有key组成的Set集合。
2.与List集合的关系
如果把Map里的所有value放在一起来看,它们又非常类似于一个List:元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中索引不再使用整数值,而是以另外一个对象作为索引。

微信公众号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值