1.为什么要使用集合
想必大家已经了解了数组:
1.数据类型比较单一
2.数组的容量不可改变
3.数组的方法太少了,大部分的情况下,都是程序员自己写的
Java给咱们封装了一些类供程序员使用,把咱们之前学的数组和方法那些练习题给封装了
咱们程序员直接调用一个方法即可。省事而且效率高
Colletion集合【接口】
完成对一组数据进行增删改查的操作。
2.集合的架构
集美们现在要学会API文档
interface Collection<E> Java中所有集合的总接口
--| List<E> Collection下面的子接口,特征:存放数据的时候,有序的可重复的
--|--| ArrayList<E> List接口下面的实现类。默认长度为10的容量的数组。可以自动扩容。
--|--| LinkedList<E> List接口下面的实现类。
--|--| Vector<E> 安全,比ArrayList安全
--| Set<E> Collection下面的子接口,特征:存放数据的时候,无序的不可重复的
--|--| HashSet Set接口下面的实现类底层是一个hash表
--|--| TreeSet Set接口下面的实现类底层是一个树形结构
3.Collection接口下面常用的方法
Collection<E> 中的方法,遵从Collection接口所有的实现类或者子接口都可以这些方法
增:
boolean add(E e);添加指定的元素到集合中。采用的方式是尾插法
boolean addAll(Collection<? extends E> c);添加另外一个集合到当前结合对象中,要求添加的对象集合中泛型和当前集合对象保持一致。
class Tiger extends Animal
class Dog extends Animal
删:
boolean remove(Object obj);删除集合中指定的元素
boolean removeAll(Collection<?> c);删除两个集合中交集元素
boolean retainAll(COllection<?> c);保留两个集合中的交集元素
void clear();清空,一个不落
查:
int size();获取集合中元素的个数
Object[] toArray();将集合转为Object类型的数组
boolean contains(Object o);判断当前指定的元素在当前集合中存在
boolean containsAll(Collection<?> c);判断指定的集合是不是当前集合的子集合
boolean isEmpty();判断当前集合中是否存在元素
4.Collection接口下面的迭代器
迭代器是提供另外一个操作集合的方式
之前操作一个集合的话。
遍历
有个for循环,一个是增强for循环
迭代器
1.获取迭代器的对象
通过集合对象获取迭代器对象
2.迭代器对象下面有几个重要的方法
boolean hasNext();判断当前元素是否可以继续向下遍历
Object next();获取当前迭代器指向的元素,并且指向下一个元素
void remove();删除
5.List接口
List特征:
1.有序的 添加的顺序和保存的顺序一致
2.可重复的 元素有可能是一样的进行保存
增:
boolean add(E e);在末尾添加元素
boolean add(int index, E e);在指定的位置添加指定的数据
boolean addAll(Colletion<? extends E> c);
boolean addAll(int index, Colletion<? extends E> c);在指定的下标的位置添加指定的集合
删:
remove(int index);通过索引下标进行删除数据
改:
E set(int index, E e);使用指定的元素替换掉指定下标元素,返回被替换掉的元素
查:
E get(int index);获取指定下标的元素
int indexOf(Object obj);查找指定的元素的下标
int lastIndexOf(Object obj);查找指定元素在集合中最后一出现的索引位置
List<E> subList(int startIndex, int endIndex);获取List的子集合,要头不要尾