集合框架(结束oop)
集合框架的好处:容量可扩展
java集合框架提供一组 性能优良的 接口和类 他们位于java.util包中
注:LinkedList、ArrayList 、HashMap存取元素需要是 同类型的
Collection、List、Set、Map是接口
ArrayList、LinkedList、HashMap是实现类
面试问:Collection和Collections的区别?
答:Collection是接口,Collections是算法。
Collection接口存储一组不唯一、无序的对象。
不唯一:可以在集合里存很多个a
无序:存进去之后不会按照原来的顺序
List接口存储一组不唯一、有序的对象。
导包的时候要导java.util下面的
ArrayList实现长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。(创建ArrayList集合对象,默认创建的初始容量是10)
LinkedList采用链表存储方式。插入、删除元素时效率比较高。(双向链表)
Set接口存储一组唯一,无序的对象。
Map接口存储一组键值对象,提供key到value的映射。
ArrayList基本使用
//1.创建ArrayList集合对象
List list=new ArrayList();
//2.添加信息
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.查询集合中有多少条数据
list.size();
//4.删除数据
list.remove(1);//删除下标为1的值
//5.查找数据
list.get(i);//根据下标进行查找
//6.遍历输出所有元素
for(int i=0;i<list.size();i++){
String str=list.get(i);
System.out.println(str);
}
//7.判断元素是否在集合中 list.contains(Object型);
list.contains("aaa");
//判断对象p1是否在集合中 返回值为boolean
示例(看list.add(“aaa”)源码)
1.进入ArrayList类
具体做法:把鼠标放在ArrayList上面,按住ctrl键不放,点击ArrayList
2.通过"alt+7" 找到add方法
查看最里面的方法
private void grow(int minCapacity){
int newCapacity=oldCapacity+(oldCapacity>>1);
//右移一位 >>1 相当于除2 解释:二进制 把最后的数字去掉
//左移一位 <<1 相当于乘2 解释:二进制 在最后一位加0
}
LinkedList的特殊方法
ArrayList能用的方法LinkedList都能用
LinkedList比ArrayList多了6个方法
如果要使用LinkedList比ArrayList多的方法,最左边要写成LinkedList
LinkedList list=new LinkedList();
LinkedList特有方法(6个)
HashMap(Map接口的实现类)
Map接口:
通过key去存取value值
基本用法:
//1.创建HashMap集合
Map maps=new HashMap();
//2.存值 存的时候要写key和value
maps.put("CN","中国");
//存值注意点:
1.key值不可重复 若重复 后面的值会覆盖前面的
2.value值可以重复
//3.查询有多少条数据
maps.size()
//4.获取value值(通过key值)
String cn=(String)maps.get("CN");
//涉及强制类型转换 因为map.get("key值")返回值为Object型