一、产生背景:
①、保存一组对象,按照之前做法只能使用对象数组,但数组本身有长度限制(同一类型且长度固定)
②、类集是一个动态的对象数组,不受对象数组长度限制(同一类型且长度不固定)
二、类集常用接口:
①、Collection接口
②、Map接口
三、总结:
类集设计为接口,目的是容易扩展和修改
四、类集Collection、Map接口
接口 | Collection接口-->泛型(多种类型) | Map接口 | ||||||
---|---|---|---|---|---|---|---|---|
子接口 |
list接口 线性列表的存储方式,存储顺序和添加顺序相同元素可重复 双向输出 |
Set接口 不保证元素的顺序 不允许出现重复的元素 不允许双向输出 |
HashMap无序输出:A+C+D HaspTable(Propertites)无序输出:A+C+D TreeMap(SortedMap)有序输出:A+C+D IdentitvHashMap(key可以重复的Map集合)输出:A+C+D JSONObject输出:C+D | |||||
实现类 |
ArrayList 输出是:A+B+C | LInkedList(Queue) |
JDK1.0 Vector(stack) |
HashSet 输出是:A+C |
TreeSet(SortedSet) 输出是:A+C | |||
集合输出 | 集合输出(输出方式) | |||||||
A | B | C | D | |||||
Iterator 迭代输出,使用最多的方式 boolean hasNext()://判断是否有下一个值 E next()://取出当前元素 void remove(): |
ListIterator 是给Iterator的子接口 interface ListIterator<E> extends Iterator<E> boolean hasPrevious()://判断时候有上一个元素 E previous()://取出当前元素 int previous()://返回上一个元素的索引号 int perviousIndex()://返回上一个元素的索引号 在list接口文件中有-LIstIterator<E> listIterator(); |
foreach 可以输出数组和集合 for循环+集合下标(可从左到右,从右到左) |
Map.entrySet()-->Set-->Iterator/foreach keySet--Set-->Iterator/foreach | |||||
总结 | 此接口结果是由前向后单向输出 | 可以双向输出,一定要先由前往后输出,然后在由后往前输出 |
五、interface Collection<E> extends Iterable<E> 引入了泛型
Collection接口:存放一组单值的最大父接口,单值是指集合中的每个元素都是一个对象
List接口:是Collection接口的子接口,对Collection接口进行了大量扩充,里面的只可重复
Collection接口 | Iterable接口 | LIst接口 |
---|---|---|
int size(); //长度 | Iterator<T> iterator | E get(int index) |
boolean isEmpty();//是否为空 | E set(int index,E element); | |
boolean contains(Object o) | void add(int index,E element); | |
Iterator<E> iterator();//元素迭代 | E remove(int index); | |
Object[] toArray(); | int indexOf(Object o); | |
<T> T[] toArray(T[] a); | int lastIndexOf(Object o); | |
boolean containsAll(Callection<?> c); | LisrIterator<E> listIterator(); | |
boolean add(E e);//添加元素 | LisrIterator<E> listIterator(int index); | |
boolean remove(Object o); | Lise<E> subList(int fromIndex,int toIndex); | |
boolean addAll(Collection<? extends E> c); |
以上抽象方法是在Collection接口基础上添加的 List接口都是和下标有关 | |
boolean removeAll(Collection<?> c); | ||
boolean retainAll(Colletion<?> c); | ||
void clear(); | ||
int hashCode(); | ||
A | B | C |
六、接口内的抽象方法,只能有实现类完成
ArryList 长度/添加/删除/搜索/元素遍历/排序
源码:ArrayList<E> implements List<E>
//常规写法
ArrayList<String> arrayList = new ArrayList<String>();
//多态上转,对接口进行实例化
List<String> list = new ArrayList<String>();
类集经常操作命令:
add,remove,clear
set,get
indexof,size ,contains
iterator(集合输出)