一:学习集合的用处
1:数组的缺陷
(1)数组中只能存储相同类型的数据。
(2)数组的长度固定不变,不能很好的解决元素数量动态变化的问题。
(3)虽然可以通过数组名.length获取数组的长度,但却无法直接获取
其中真正存储的元素的个数;
(4)数组采取的是在内存中分配连续空间的方式来存储数据,虽然可以
通过下标快速获取元素,但是反过来,要想通过某个元素的信息来查找这个元素
时却比较麻烦,需要逐个遍历,效率低下。
(5)无法通过更复杂、方便的方式来存储数据
2、
针对数组的这些缺陷,Java 提供了比数组更灵活、更实用的“集合框架”,可大大
提高软件的开发效率,并且不同的集合可适用于不同的场合。
二:什么是集合?
1、与变量、数组一样,集合也是存储数据的一种容器。
2、它由一组接口和类组成,位于java.util包中。
3、它的关系结构如下:
虚线框表示接口或抽象类,实线框表示实现类,粗实线框表示常用的实现类。虚线和空
心箭头表示实现关系,虚线和实心箭头表示依赖关系(即线连接的类中使用了箭头所指向的
类)。
三、list接口:有序 & 不唯一
(1)ArraysList: ① 和数组采用相同的存储方式,在内存中开辟连续的空间,并且实
现了长度可变的数组,也称为动态数组。 ②与数组的不同的是:数组只能存储相同类型的元素但ArraysList可以存储任何类型的元素,并且会把所有元素都转换成 Object类型(本质上仍是相同数据类型)。 ③因其内存空间连续,在增加和删除非尾部元素时会造成其它元素 的移动,因此(“增删改”)效率较低。但适用于遍历和随机访问元 素 (即“查”)。
(
2)LinkedList: ①采用链表式的存储方式,适用于插入和删除元素,不适用于查找
元素。与ArraysList互补。
四、set:无序&唯一
①它的查找效率更高
注:set没有get方法
五、Iterator:对集合进行迭代遍历
(1) 使用iterator()方法获取Iterator对象: Iterator iterator=****.iterator();
(2)hasNext():判断是否存在下一个可迭代的元素,有则返回true;
(3)next():获取要访问的下一个元素;
六、Map:
①存储K键-V值组合;
②K键是一个set集合,不要求有序,不可重复;
③value不要求序但可重复;
Map<String,List<String>> map=new HashMap<>();//复合
结构,可存放如某人的通话记录类的数据。
七.Collections 类
(1)
排序:
//comparable:可比较的
若要对一个类的对象进行排序,要先让这个类实现comparable接口,再 调用方法:
int comparaTo (Object o): this>o 返回1; this<o 返回-1; this== o 返回0; 然后通过collections.sort()方法进行排序。
(2)
替换
:全部替换成同一个元素 //fill:装满,填充; collections.fill();
(3)最大最小值:max();min()
(4)查找:binarySearch();