Java集合框架是jdk中存在于java.util.*中,包含Collection与Map连个顶级接口。
一、Collection 集合的根接口
定义的方法有:
boolean add(Object o) //添加对象到集合
boolean remove(Object o) //删除指定的对象
int size() //返回当前集合中元素的数量
boolean contains(Object o) //查找集合中是否有指定的对象
boolean isEmpty() //判断集合是否为空
Iterator iterator() //返回一个迭代器
boolean containsAll(Collection c) //查找集合中是否有集合c中的元素
boolean addAll(Collection c) //将集合c中所有的元素添加给该集合
void clear() //删除集合中所有元素
void removeAll(Collection c) //从集合中删除c集合中也有的元素
void retainAll(Collection c) //从集合中删除集合c中不包含的元素
1、 List接口
继承Collection,称之为有序的 collection。其允许集合中元素重复及多个null值。
提供的方法:
void add(int index,Object element) //在指定位置上添加一个对象
boolean addAll(int index,Collection c) //将集合c的元素添加到指定的位置
Object get(int index) //返回List中指定位置的元素
int indexOf(Object o) //返回第一个出现元素o的位置
Object remove(int index) //删除指定位置的元素
Object set(int index,Object element) //用元素element取代位置index上的元素,返回被取代的元素
常用的实现类有:ArrayList、LinkedList、Vector
数据结构
1、数据间的逻辑结构:①集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系。
②线性结构: 数据元素之间是一对一关系。
③属性结构:数据元素之间存在一对多关系。
④图形结构:数据元素之间是多对多关系。
2、数据间的存储结构:①顺序存储结构:数据元素存放在地址连续的的存储单元里。典型例子:一维数组
②链式存储结构:数据元素存放在任意储存单元里,这些储存单元可以连续也可以不连续。数据元素的存储关系不能反映其逻辑关系,会用到一个存放数据元素地址的指针。
逻辑结构是面向问题的,存储结构是面向计算机的。
ArrayList:List的主要实现类;线程不安全,效率高;底层Object [ ]实现;默认数组长度为10,当添加第11个元素是需要扩容,默认扩容为数组的长度的1.5倍。
LinkedList:底层双向链表 ;用于频繁的插入或者删除操作;Node<E> first、Node<E> last;
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
2、 Map接口
常用实现类是HashMap,结构:数组结构+链表结构