一.
集合是个容器,用来存储对象的。当我们存储的对象数目变多的时候,会带来一些问题。
对象在集合里面装的时候,到底是如何进行存储的?有人说直接往里扔就是了,要注意,对于对象而言,不止集合这么一种容器。
对于对象的存储方式,每一个集合都有自己独特的定义,是根据某些需求而定的。
举例子来谈:用水杯泡茶,必须有过滤网,不然喝茶会有茶叶,如果只是喝白开水那么就不需要过滤网。
这说明容器自身都有其特定的结构,这种结构我们称之为数据结构,容器里面存储的就是数据。
数据到底按照什么样的方式来进行存放呢?我们称之为数据的结构。每一个容器的结构其内部都不太一样。
一堆容器,高矮胖瘦都不相同,都能去装东西,只不过它们内部都有其自身的特点。依据不同的需求,使用不同的容器。
在众多不同的容器中,有一部分容器有共性。这样就不断地进行抽取,部分抽取,不断向上,形成体系。(猫,狗...一下子抽成动物,太快了)
集合框架体系,里面的内容有很多。这么庞大的体系并不可怕,学习的方法是:看顶层,用底层。
顶层定义着集合体系中所有共性的东西,想使用集合体系,只要把顶层的功能搞清楚,体系中的任意成员都可以使用。
共性在集合中是存在的,叫做Collection,这就是向上不断抽取形成的顶层。
这个顶层里面到底具备什么样的方法呢?如果要判断一个容器具备什么样的方法,按照面向对象的思考方式,叫做这容器有什么功能可以方便于我的指挥?或者说这个对象有什么样的功能方便我的指挥。容器的最基本功能就是装东西,删东西。
现在就看一下Collection有什么功能。
二.
现在我们学习集合体系,它不在java.lang包中了。java.lang包是java语言核心包,现在我们用的是一个工具,这是工具包中的内容,叫做java.util包。
Collection既然是作为接口出现,那么就意味着里面内容全是抽象的。接下来,学习一下Collection这个共性接口当中,都定义了哪些方法。将Collection学完,集合的使用就不成问题了。
1. 添加方法
add方法就是添加对象,E是指什么?现在将E当成object(能接受任意对象,肯定是object类型,所以这里说E就是Object)。1.4版本里面写的就是object,1.5有了新的特性,所以产生了变化。现在先不介绍新特性,先学习集合的使用,然后再学习集合的使用。
add添加方法,给我个元素添加到集合当中,返回值类型是boolean。添加成功就为true,添加失败就为false。
addAll方法是将一个集合中的所有元素加到另一个集合中,添加的不是一个,有可能是一堆。
其实写法就是addAll(Collection coll);
2. 删除方法
删除方法无外乎两种,要么是delete,要么是remove。
添加和删除的返回值类型都是boolean,这表明这些动作并不是简单的操作,可能涉及很多东西。
removeAll是删除一堆,应该不是全部删除。如果是全部删除,就不是remove方法,是clear方法,是清空的意思。
clear将集合的所有元素都删掉,但是集合还在。
3. 判断
boolean类型的contans方法,判断一个元素,或者一堆元素是否在集合中。(我会将判断和查找搞混淆)
boolean containsAll(collection coll)判断一个集合中是否有一堆元素,需要将被判断的元素堆先做成一个集合么?不然传递的参数列表怎么是一个集合?
集合的判断还可以用hashcode,equals。
isEmpty方法是判断是否有元素,这个方法和其他方法会有冲突。
4. 获取
获取方法有这么几种,一个是获取集合中元素的个数(或者说长度),集合中有几个元素,集合自己最清楚。能获取长度的方法,无外乎length和size。如果size为0,就是没有元素。isEmpty方法就为true,size要是有元素,isEmpty就为false。集合用size判断,但是封装成了isEmpty来用。
获取结合元素的iterator方法,就是迭代器。迭代器就是专门用于取出集合中元素的方式,
迭代器的返回值非常特殊,返回的并不是取出的元素,而是一个迭代器对象Interator。
5. 其他方法
(通过分类的方式来介绍类中的许多方法)
ratainAll方法和removeAll差不多,单独列出来讲是因为,这个方法是取交集,就是两个集合的交集。
toArray是将集合变成数组,