(1)可以动态保存任意多个对象,使用比较方便! (2)提供了一系列方便的操作对象的方法:add、remove、set、get等 (3)使用集合添加、删除新元素的示意代码
集合主要是两组(单列集合 , 双列集合)
Collection 接口有两个重要的子接口 List Set,他们的实现子类都是单列集合
Map 接口的实现子类 是双列集合,存放的 K-V(键值对)
Collection 接口常用方法,以实现子类ArraryList来演示
collection接口遍历元素方式1-使用literator(迭代器)
(1)Iterator对象成为迭代器,主要用于遍历Collection集合中的元素 (2)所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,既可以返回一个迭代器。 (3)Iterator 仅用于遍历集合,Iterator本身并不存放对象
迭代器的执行原理
Iterator iterator = coll.iterator(); //得到一个集合的迭代器 //hasNext() 判断是否还有下一个元素 while(iterator.hasNext()){ //next()作用: 1.下移 2.将下移以后集合位置上的元素返回 System.out.println(iterator.next()); }
collection接口遍历元素方式2-增强for循环
增强for循环,可以代替iterator迭代器,特点:增强for就是简化版的iterator,本质一样。只能用于遍历集合或数组
- 基本语法 for(元素类型 元素吗 : 集合名或数组名){ 访问元素 }
1.使用增强 for,在Collection集合 2.增强for, 底层仍然是迭代器(可以用断点一步一步看) 3.增强for可以理解成就是简化版本的 迭代器遍历 4.快捷键方式 I
for (Object book : col){ System.out.println(“book=” + o) }
(1)ArraryList中维护了一个Obejct类型的数组elementDatahttps://blog.csdn.net/please93/article/details//存储的值是放在elementData数组的 transient Object[] elementData; //transient 表示瞬间,短暂的,表示该属性不会被序列化 (2)当创建ArraryList对象时,如果使用的时无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍 (3)如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍
让我们通过这段代码进入ArrayList的底层一起去看看吧
(1)linkedList底层维护了一个双向链表 (2)linkedList中维护了两个属性first和last分别指向 首节点和尾节点 (3)每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表 (4)所有linkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高。
linkedList的底层代码刨析(add添加值) linkedList的底层代码刨析(remove)
(1)无序 (添加和取出的顺序不一致),没有索引 (2)不允许重复元素,所以最多包含一个null
和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样
同Collection的遍历方式一样
HashSet的全面说明 (1)HashSet实现了Set接口 (2)HashSet实际上是HashMap
(3)可以存放null值,但是只能有一个null (4)HashSet不保证元素是有序的,取决于hash后,再确定索引的结果。 (5)不能有重复元素/对象。在前面Set 接口使用已经讲过
以上就是本篇文章【集合(未完结)】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/quote/1227.html 行业 资讯 企业新闻 行情 企业黄页 同类资讯 网站地图 返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多