目录:
一、Collection接口方法
二、Iterator迭代器接口
三、Collection子接口一:List
四、Collection子接口二:Set
/*****************分割线************************/
一、Collection接方法
Collection接口
Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。
JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如Set和List)实现
Collection接口方法
1.添加:add(Object obj)、addAll(Collection coll)
2.获取有效元素的个数:int size()
3.清空集合:void clear()
4.是否是空集合:boolean isEmpty( )
5.是否包含某个元素:boolean contains(Object obj):通过元素的equals方法来判断是否是同一个对象
boolean containsAll(Collection c):也是调用元素的equals方法来比较的,拿两个集合的元素挨个比较
6.删除:boolean remove(Object obj):删除找到的第一个元素、
boolean removeAll(Collection coll):取当前集合的差集
7.取两个集合的交集:boolean retainAll(Collection c)
8.集合是否相等:boolean equals(Object obj)
9.转成对象数组:Object[ ] toArray()
10.获取集合对象的哈希值:hashCode()
11.遍历:iterator():返回迭代器对象,用于集合遍历
二、Iterator迭代器接口
Iterator对象称为迭代器(设计模式的一种),主要用于遍历Collection集合中的元素
所有实现Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象
Iterator本身不提供承载对象的能力,如果需要创建Iterator对象,则必须有一个被迭代的集合
集合每次调用iteratr()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
Iterator接口的remove()方法
使用foreach循环遍历集合元素
Java5.0提供了foreach循环迭代访问Collection和数组
遍历集合的底层用Iterator()方法来实现
foreach还可以用来遍历数组
三、Collection子接口之一:List
鉴于Java中数组用来存存储数据的局限性,通常用List替代数组
List集合类中元素有序、且可重复。集合中的每个元素都有其对应的顺序索引
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
JDK API中List接口的实现类常用的有:ArrayList、ListedList和vector
List接口方法
void add(int index,Object ele):在index位置插入ele元素
boolean addAll(int index,Collection else):从index位置开始将eles中的所有元素添加进来
Object get(int index):获取指定index位置的元素
int indexOf(Object obj):返回obj在集合中首次出现的位置
int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
Object remove(int index):一处指定index位置的元素,并返回此元素
Object set(int index,Object ele):设置指定index位置的元素为ele
List subList(int fromIndex,int toIndex):返回从fromIndex到toIndex位置的子集合
List实现类之一:ArrayList
ArrayList是List接口的典型实现类、主要实现类
本质上,ArrayList是对象引用的一个“变长”数组
JDK1.8ArrayList像兰函数一开始创建一个长度为0的数组,当添加第一个元素时再创建一个始容量为10的数组
Array.asList(...)方法返回的List集合,既不是ArrayList实例,也不是Vector实例,Arrays.asList(...)返回值时一个固定长度的List集合
List实现类之二:LinkedList
对于频繁插入或删除元素的操作,建议使用LinkedList类,效率较高
新增方法:
LinkedList:双向链表,内部没有声明数组,而是定义了Node类型的first和last,用于记录首末元素。同时,定义内部类Node,作为LinkedList中保存数据的基本结构。Node除了保存数据,还定义了两个变量。
prev变量记录前一个元素的位置
next变量记录下一个元素的位置
List实现类之三:Vector
大多数操作与ArrayList相同,区别在于Vector是线程安全的
在各种List中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
新增方法:
Collection子接口之二:Set接口
Set接口是Collection的子接口,set接口没有提供额外的方法
Set集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set集合中,则添加操作失败
Set判断两个对象是否相同不是使用 == 运算符,而是根据equals()方法
Set实现类之一:HashSet
重写hashCode()方法的基本原则
Set实现类之二:LinkedHashSet
LinkedHashSet是HashSet的子类
Set实现类之三:TreeSet
排序-自然排序
排序——定制排序