1.1集合框架概述
集合和数组的相似点:都可以存储多个对象,对外作为一个整体
数组的缺点(集合的优点):
1.数组的长度必须在初始化时指定,且固定不变
2.数组采用连续存储空间,删除和添加效率低
3.数组无法直接保存映射关系
4.数组缺乏封装,操作繁琐
集合的优点
1.集合的底层为数组时长度改变在封装内完成
2.集合的底层可以是数组,链表,哈希表,红黑树等,效率高
3.集合中的MAP专门用于保存映射关系
4.集合都是由接口和类的方式封装完成,可以直接调用(方便!!)
集合框架:
容器两大类:Collection接口 和 Map接口
Collection接口存储不唯一,无序的对象。包含list接口和Set接口:
list接口存储不唯一,有序的对象。相当于数组
set接口存储唯一,无序的对象:
Map接口存储一组键值对象,提供key到value的映射:比如学生与学号的集合
key: 唯一 无序
value:不唯一 无序
ArrayList(相当于线性表):
LinkedList(相当于链表):
1.2ArrayList
ArrayList的基本操作:
添加:
//add方法,在末尾添加 list.add(67); list2.add(54); list.add(2,93);//在数组索引为2的地方增加93 list.addAll(list2);//在list末尾加入list2 list.addAll(2,list2);//在索引为2处加入list2
删除:
list.removeAll(list2);//删除list中包含的list2中的元素(取并集) list.retainAll(list2);//保留list中包含的list2中的元素(取交集)
修改:
list.set(1,99);
查询:
list.get(2); list.size(); list.isEmpty();
在集合中使用泛型:
优点:
1.安全(自动类型判别)
2.方便(不用强转)
方法:
ArrayList<Integer> list =new ArrayList<Integer>();
不使用泛型会出现的问题:
1.不安全(不规范) :list.add("ssssada");
2.繁琐:需要进行强制转换,需要将接中的对象从object类转化为基本类型