赞
踩
1、为什么会产生集合?
集合可以类比到数组,都是储存多个数据的容器。
数组:长度不可变,在定义时就已经指定其长度(巴士)
集合:长度可变(火车,可以加车厢)
所以,在使用层面上来说,使用集合会比使用数组更加便利。
2、集合类概述
说明:
Collection是List和Set的父接口
List和Set同样也是接口
List常用的实现类:ArrayList和LinkedList
Set常用的实现类:HashSet和TreeSet
Map常用的实现类:HashMap和TreeMap
小知识:
Collection(集合名称) Collections(操作集合的工具类)
Array(数组名称) Arrays(操作数组的工具类)
说明:
首先,我们必须明确一点,以下所谈有序和无序不是指集合中的排序,而是指是否按照元素添加的顺序来存储对象。
List集合的特点:有序,可以有重复的元素。
常用实现类:ArrayList和LinkedList
(1)ArrayList集合
具有数组结构的list集合,有下标,可以通过下标查找、删除、修改、添加集合中的元素,下标和数组一样从0开始。
与数组对比: ArrayList集合的长度是可以改变的,添加元素和删除元素是不需要手动扩容和缩容的。
(2)LinkedList集合
双向链表结构,没有下标。
说明: 对于LinkedList集合中的一个元素,除了存放data信息,还存放着上一个元素以及下一个元素的地址信息。
(3)从查询角度看
(4)从修改角度看
(5) ArrayList必须是连续的内存空间,LinkedList不需要连续的内存空间。
综上所述:
查询方面:
ArrayList有下标,可以根据下标直接获取元素。
LinkedList没有下标,获取元素需要前后遍历 。
修改方面:
ArrayList删除和添加元素的机制类似于数组,效率慢。
LinkedList删除和添加元素,只需要断开指定的连接,在断开的地方添加或者修改元素、修改地址信息即可,相对ArrayList要快。
1、添加元素
集合名.add(o);
2、获取集合长度
集合名.size();
3、获取元素(通过下标)
集合名.get(index);
4、删除元素
集合名.remove(index);
remove的重载方法:
5、修改元素
集合名.set(index, o);
6、添加元素
例如:在下标为1的位置上插入
集合名.add(index,o);
以上,不管是ArrayList还是LinkedList集合都适合用,
后面会列举一些LinkedList集合特有的方法。
for以及foreach的遍历方式省略不写。
(1)迭代器遍历
原理:
当获取到对应集合的迭代器时,光标指在集合最开始的那个元素,借助迭代器名.hasNext() 来判断是否有下一个元素,如果有则会返回true,没有则会返回false,即已经取到迭代器的末尾了。同时通过迭代器名.next() 来获取元素。
public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("123"); list.add("abc"); list.add("456"); //1、根据集合获取对应的迭代器 Iterator<String> it = list.iterator(); //2、判断后面还有无元素,如果有则输出,无则跳出循环 while(it.hasNext()) { System.out.println(it.next()); } } }
(2)lambda表达式
JDK1.8之后的新特性。
演变过程复杂,所以展示其应用即可。
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("123");
list.add
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。