学习java第十四天
集合:是一个容器,用于存数据
对象数组:
类名 [ ] 对象名 = new 类名[ ] ;
内存划分:对象数组存的都是16位内存地址。
数组和集合的关系:
相同:都是存数据的。都是采用数组的方法存储
不同:数组既可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型、数组长度固定的,集合长度可改变
集合的框架:
- 单列: 每一个存的数据的都是独立的 Collection 跟接口
- 双列: 以键值对存 key values
Collection:层次结构 中的根接口
常用方法:
boolean add(E e) 添加,返回值是bealoon 添加成功返回true
boolean contains(Object o) 判断是否有此元素 如果存在返回true 否则false
boolean isEmpty() 判断集合里是否有元素 ,空返回True,不空返回False
boolean remove(Object o) 根据集合里的元素进行删除
int size() 获取到集合的长度
Object[] toArray() 把集合转换成数组
void clear() 清空数组里的所有的元素
iterator() 把集合转换成迭代器的方法
1.addAll(Collection<? extends E> c) 把小集合添加到大集合里, 例如: co.addAll©; 把集合 c的所有数据添加到co
2.boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
3. removeAll(Collection<?> c) 返回值:如果存在交集返回 是true , 返回的是没有交集的数据
4. retainAll(Collection<?> c) 返回值 判断是否发生该变,如果发生改变返回true,不发生该变返回false 取出来的是交集的结果
集合的遍历:1. for 2 .增强for 循环 3.使用迭代器来进行遍历
Iterator : 是一个接口,不能够被实例化
常规的方法: hasNext() 判断是否有下一个元素, 如果有返回true,则获取到下一个元素。
remove() 移除迭代器的某一个元素
迭代器遍历:
while 循环 (迭代器.hasNext()){
迭代器.next() ; // 获取其元素
}
注:增强for 循环的底层也是使用迭代器来实现,也是通过指针
List:导包 java.util,是Collection的子接口
List集合常规独有的一些方法:
public void add(int index, E element) 根据索引的位置来进行添加
E get(int index) 根据索引来获取其值
E remove(int index) 根据索引来进行删除
E set(int index, E element) 也是根据索引来替换 (前提这个已经存在)
迭代器遍历报错: java.util.ConcurrentModificationException 对象的并发修改(即Iterator 迭代器迭代的时候修改集合的数据产生错误)
ListIterator 这个迭代器是针对 list 集合而存在, 它的父类也是Iterator,支持修改,皮面该错误。
ArrayList:List的顺序存储的数组方式实现类。(开发常用)
有顺序 、 有索引 、可以重复 、但是线程不安全。
数组的方式来存数据 特点 :查询快 增加 删除修改慢 。
常规方法:
public boolean add(E e):添加(默认向末尾添加数据)
public E get(int index):根据索引来获取数据 ( 常用)
LinkedList:List的链式存储式实现类
特点: 增删改快,查询慢
构造方法:
构造方法详细信息
public LinkedList()构造一个空列表。
public LinkedList(Collection<? extends E> c)构造包含指定元素的列表
常规的方法:
public void addFirst(E e) 插入数据到集合的开头
public void addLast(E e) 插入到末尾 注意点: 比 add( )插入的效率要高
public E getFirst() 拿到集合中 第一个元素
public E getLast() 获取最后一个数据
public E removeLast() 移除最后一个元素
public E removeLast() 移除第一个元素
Vector:List的顺序存储的数组方式式实现类,主要用于线性安全。但已经被ArrayList取代。
特点:查询快 增删改慢
独有方法:
public void addElement(E obj) 向末尾来添加数据
public E elementAt(int index) 根据索引来获取
public boolean removeElement(Object obj) 删除集合里的对象
Element 都是根据节点来进行操作
总结:这次主要学习了Collection、List、List下的三个集合类的知识,集合的迭代器两个 Iterator、ListIterator,但是对于总是出现的JDk API工具里面出现的问号 ?之类的还是不懂,比如说:public boolean addAll(Collection<? extends E> c),参数内容的解释是?