集合
一、一张图
二、三个知识点
1、泛型
2、迭代器
Iterable是java.lang包下的一个接口,实现该接口的类都能作为增强for循环的目标
Iterator是java.util包下的一个接口,用来迭代集合中的元素,ArrayList完成了对该接口的实现,获取的其实是实现类对象
ListIterator是一个接口,这个接口可以支持并发修改,内部提供了add set remove方法,如果对于一个List集合对象要通过使用迭代器做修改(删除、添加、修改)那么请使用ListIterator
三、六个接口
1、Collection
定义
public interface Collection<E>
extends Iterable<E>
存储元素特点
无序,可重复
常用方法
增加元素方法 | 描述 | |
---|---|---|
boolean add(E e) | 向集合中添加一个元素 | |
boolean addAll(Collection c) | 把集合c的所有元素添加到集合中 | |
删除元素方法 | ||
void clear() | 清空所有元素 | |
boolean remove(Object o) | 删除集合中的某个对象 | |
boolean removeAll(Collection c) | 删除某集合与当前集合的交集 | |
boolean retainAll(Collection c) | 保留某集合与当前集合的交集 |
查看元素方法 | 描述 | |
---|---|---|
boolean contains(Object o) | 是否包含某个对象 | |
boolean containsAll(Collection c) | 是否包含某个集合的所有元素 | |
boolean isEmpty() | 集合是否为空 | |
int size() | 集合中元素个数 |
迭代元素
//增强for循环
for(Object o : c) {
System.out.println(o);
}
//iterator迭代器1
Iterator it = c.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//iterator迭代器2
for(Iterator it1 = c.iterator();it1.hasNext();) {
System.out.println(it1.next());
}
注意事项
- 往集合中添加元素时,会自动进行类型转换
Collection c = new ArrayList();
c.add(1);//Integer in1 = Integer.valueOf(1) Object o = in1;
2、List
定义
public interface List<E>
extends Collection<E>
存储元素特点
有序,可重复
常用方法
相对于Collection,多了对于索引的操作,因为
增加元素方法 | 描述 | |
---|---|---|
boolean add(int index,E e) | 向集合中指定索引添加一个元素 | |
boolean addAll(int index,Collection c) | 把集合c的所有元素添加到集合指定索引处 | |
boolean add(E e) | 向集合中添加一个元素 | |
boolean addAll(Collection c) | 把集合c的所有元素添加到集合中 | |
删除元素方法 | ||
void clear() | 清空所有元素 | |
E remove(int index) | 删除集合中指定索引处的对象 | |
List subList(int fromIndex, int toIndex) | 截取集合从fromIndex到toIndex(不包括toIndex)中的对象,返回一个新的List | |
boolean remove(Object o) | 删除集合中的某个对象 | |
boolean removeAll(Collection c) | 删除某集合与当前集合的交集 | |
boolean retainAll(Collection c) | 保留某集合与当前集合的交集 |
查看元素方法 | 描述 | |
---|---|---|
boolean contains(Object o) | 是否包含某个对象 | |
boolean containsAll(Collection c) | 是否包含某个集合的所有元素 | |
boolean isEmpty() | 集合是否为空 | |
int size() | 集合中元素个数 | |
E get(int index) | 返回索引处的对象 | |
int indexOf(Object o) | 返回某对象在集合中第一次出现的索引 | |
int lastIndexOf(Object o) | 返回某对象在集合中最后一次出现的索引 |
修改元素方法 | 描述 | |
---|---|---|
E set(int Index,Object o) | 将集合中index索引处的值用o替换,返回原集合中的对象 |
迭代元素
Collection中能用的List都能用
//使用ListIterator迭代器
ListIterator lt = l.listIterator();
while(lt.hasNext()) {
System.out.println(lt.next());
}
//逆向迭代
while(lt.hasPrevious()) {
System.out.println(lt.previous());
}
注意事项
3、Set
定义
public interface Set<E>
extends Collection<E>
存储元素特点
无序,唯一
常用方法
增加元素方法 | 描述 | |
---|---|---|
boolean add(E e) | 向集合中添加一个元素 | |
boolean addAll(Collection c) | 把集合c的所有元素添加到集合中 | |
删除元素方法 | ||
void clear() | 清空所有元素 | |
boolean remove(Object o) | 删除集合中的某个对象 | |
boolean removeAll(Collection c) | 删除某集合与当前集合的交集 | |
boolean retainAll(Collection c) | 保留某集合与当前集合的交集 |
查看元素方法 | 描述 | |
---|---|---|
boolean contains(Object o) | 是否包含某个对象 | |
boolean containsAll(Collection c) | 是否包含某个集合的所有元素 | |
boolean isEmpty() | 集合是否为空 | |
int size() | 集合中元素个数 |
迭代元素
注意事项
四、9个常用类
1、ArrayList
底层
数组
优缺点
缺:添加删除慢
优:通过索引获取元素和迭代元素块
常见方法
和List一致
2、LinkedList
底层
双向链表
优缺点
缺:迭代,获取索引元素慢
优:添加删除块
常见方法
相比List多了以下方法,正对头尾
添加元素方法 | |
---|---|
void addFirst(E e) | |
void addLast(E e) | |
boolean offer(E e) | |
boolean offerFirst(E e) | |
boolean offerLast(E e) |
删除元素方法 | |
---|---|
E removeFirst() | |
E removeLast() | |
E poll() | |
E pollFirst() | |
E pollLast() |
查看元素方法 | |
---|---|
E getFirst() | |
E getFirst() | |
E element() | |
E peek() | |
E peekFirst() | |
E peekLast() |
3、Vector
底层:数组 线程安全 速度慢 安全
4、HashSet
底层
数组+链表
优缺点
添加,修改,删除都很快
常见方法
和Set一致