集合框架

如果对此文章有什么疑问,可以加小编微信(foreverTXforever)!小编可以为你解答。

一:集合框架的概念和由来

1.集合类是用于存储对象的容器。该容器的长度是可以变的。

2.集合和数组的区别:

集合长度是可以变的,数组的长度是不可以变的。

集合中只能存储对象,但数组中可以存储基本数据类型。

集合中存在的对象可以是任意类型的,而数组中只能存储一种类型的对象。

3.框架的由来:

容器有很多,因为每个容器的数据结构是不同的。(数据结构:就是数据在容器中的存储方式,比如鸡蛋有散装鸡蛋,也有品牌鸡蛋。)

但这些容器都有一些相同的功能,比如都用来存储数据,那么这时就可以向上抽取,最后得出了一个他们共有相同功能的容器这个容器就是集合框架,也就是collection接口。

4.集合中常用的方法:

4.1添加方法:

boolean add(object     e):一次添加一个元素。

booleanaddAll(Collection):将一个参数容器中的元素添加到当前容器中。

4.2删除方法:

boolean   remove(object):删除指定对象。

booleanremoveAll(Collection):删除指定Collection中和本Collection中相同的元素。

void clear():直接将集合中的元素清空。

4.3判断方法:

boolean contains(object):是否包含指定元素。

boolean contains(Collection):是否包含指定容器中的元素。

boolean isEmpty():是否有元素。

4.4获取元素个数:

int size():获取元素有几个。

4.5取交集:

boolean retainAll(Collection):保留和指定Collection集合中相同的元素不同的元素会被删除。

4.6将集合转成数组:

Object[] toArray()

4.7取出元素的方法:

Iterator iterator()(后面有详细介绍此方法)

二:迭代器

1.什么是迭代器:

迭代器是取出集合元素的方式的一个对象,该对象本身就内置在容器中如何获取到集合迭代器呢?可以通过iterator()方法来完成。该方法返回一个iterator类型对象。

创建集合

Collection coll=new ArrayList();

coll.add("abc1");

coll.add("abc2");

coll.add("abc3");

获取该集合的迭代器对象

Iterator it=coll.iterator();

使用迭代器对象中的方法完成元素的获取。

叠代器中的方法:

hasNext():如果仍有有元素可以迭代,则返回true。

next():返回迭代的下一个元素。

remove():从迭代器指定的collection中移除迭代器返回的最后一个元素。

2.迭代器的原理

2.1. 如何获取到集合的迭代器:

可以通过iterator()方法来完成。法返回一个Iterator类型对象。

2.2. 迭代器接口出现:

将每一个容器中的取出方式进行了封装,并对外暴露。这样无论是什么容器或者数据结构,只要内部取出方式实现了Iterator接口,都可以通过该接口取出这些容器中的元素。

注意:集合细节问题:

创建一个集合容器,其实也是一个对象。

这个对象中存储着特定结构可以对对象进行存储。

存储时,add可以接收任意类型的对象因为参数类型是Object

所以对象元素存入时就被提升为Object

其实在集合中真正存储都是对象的引用。

在使用迭代器取出时如果要使用自定义对象的特有方法,一定要进行向下转型。

代码:

Iterator it=coll.iterator();

while(it.hasNext){

parson p=(person)it.next();

system.out.println(p.getName()+":"+p.getAge());

三:Collection的几个重要的子接口

1. List和set的特点:

1.1 List:

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

该集合中的元素都有索引所以可以通过索引(角标)未访问元素

它可以存储重复元素

1.2Set:

不包含重复元素。

(具体的容器对象数据结构不同,顺序也不同)这个集合存入元素的顺序和取出元素的顺序不一致

2. List子接口中的方法:

因为该接口的特点是对元素有索引标示,所以它的特有方法应该都是围绕索引定义的。

2.1添加:

void add(index ,element);

boolean addAll(index,collection);

2.2删除:

object remove(index):获取并删除。

2.3获取:

获取元素:

object get(index):获取

获取元素索引:

int indexOf(object);

int lastIndexOf(object);

获取子列表:

List subList(fromIndex,toIndex):获取列表中的一部分,包含fromIndex位置,不包含toIndex位置

2.4修改:

object set(index,element):替换指定位置的元素,并返回被替换掉的元素

3.实现List接口的子类:

常见子类对象:具体的子类对象,我们要学习应该是该对象的特有的数据结构,以及相关的特点。

3.1 Vector:

jdk1.0就存在了,底层是数据结构的da,可变长度数据。原理:一旦原数组长度不够,会创建新数组,将原数组的元素复制到新数组中,并将新元素添加到新数组中。

3.2 ArrayList:

底层是数组结构,也是支持长度可变数组的。是不同步的,替代了Vector,因为效率高查询效率高,但增删效率低。

3.3 LinkedList:

底层是链接列表结构,简称链表结构。这个中结构的好处,对元素的增删非常效率很高。好处是删除和增加效率高,但查询很慢,因为它的查询要一个一个的往下查询。

注意:那什么是链接列表结构呢:

在每个元素中有一个常量记录着下一个元素的地址这样一个连一个就成了链接。

3.4那么LinkeList和ArrayList的区别:

ArrayList:查询效率高,但增删效率低。

LinkedList:好处是删除和增加效率高,但查询很慢,因为它的查询要一个一个的往下查询。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • title: java集合框架学习总结 tags:集合框架 categories:总结 date: 2017-03...
    行径行阅读 1,682评论 0 2
  • Java中集合类的关系图(虚线框是接口 实线框是类) 一、集合 集合:就是用于存储对象地址的。 集合的特点1.用于...
    咸鱼有梦想呀阅读 385评论 0 2
  • 5分钟搞定java集合框架 java集合就是一个容器。 集合概述 l 为了保存 不确定的数据,或者对象...
    wangchuang2017阅读 451评论 0 0
  • 集合类的由来:对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。就使用集合容器进行存储。 集合特点:1...
    吃瓜群众liu阅读 271评论 0 0
  • 天开始凉了,5点多下班走回家,空气里有点雾蒙蒙的。 今天一个人回家。下午师傅到家里装厨房台面,装修终于差不多划个句...
    beirikui阅读 241评论 0 0