一、集合概述
java集合类存放在java.util包中,是一个用来存放对象的容器。
注意:
1、集合只能存放对象,java中每一种基本数据类型都有对应的引用类型
2、集合用来存放对象的引用,而非对象本身。所以我们称集合中的对象就是集合对象的引用。对象本身还是放在堆内存中。
3、集合可以存放不同类型,不限数量的数据类型。
二、java集合框架
注:Iterator是一个用来遍历集合中元素的接口,主要有hashnext(),next(),remove()三种方法:
从上图可以看出:
1.集合主要分为Collection和Map两个接口
2.Collection又分别被List和Set继承
3.List被AbstractList实现,然后分为3个子类,ArrayList,LinkList和VectorList。
4.Set被AbstractSet实现,又分为2个子类,HashSet和TreeSet。
5.Map被AbstractMap实现,又分为2个子类,HashMap和TreeMap。
6.Map被Hashtable实现。
三、Iterator迭代器
他是java集合的顶层接口(不包括map系列的集合,Map接口时map系列的集合的顶层接口)
Object next():返回迭代器的元素的引用,返回值时Object,需要强制转换为自己需要的类型。
boolean hasNext():判断容器内是否还有可供访问的元素。
void remove():删除迭代器的元素。
在collection系列的集合,我们都通过迭代器来对集合中的元素进行遍历。
注意:在源码中可以追溯到集合的顶级接口,比如:Collection接口,可以看到它继承的是类Itertable
public interface Collection<E> extends Iterable<E> {
// Query Operations
注意事项:Iterator和Iterable的区别:
Iterable:存在与Java.until包中。
public interface Iterable<T> {
/**
* Returns an iterator over elements of type {@code T}.
*
* @return an Iterator.
*/
Iterator<T> iterator();
可以看到,里边封装了Iterator接口。所以只要实现了Iterable接口的类,就可以使用Iterator迭代器了。
Iterator:存在于java.util包中。核心方法next(),hasNext(),remove().
使用案例:
package com.cn;
import java.util.*;
public class test {
public static void main(String[] args) {
// 产生一个list集合
List<String> list = new ArrayList<String>();
// 添加元素
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
// 构造List的迭代器
Iterator it = list.iterator();
// 通过迭代器遍历元素
while (it.hasNext()) {
Object next = it.next();
System.out.println(next);
}
}
四、Collection接口介绍
Collect接口是层次结构中的根接口。构成Collection的单位成为元素。Collection接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。
详细介绍如下:
int size() 获取集合元素的个数
boolean isEmpty() 用于判断当前集合是否为空
boolean contains(Object) 判断是否包含指定元素
Iterator<E> iterator() 返回在此collection的元素上进行迭代的迭代器。用于遍历集合中的对象
boolean add(E e) 将指定对象添加到该集合中boolean remove(Object o) 将指定集合从该对象中移除
以及操作整个集合的方法:
boolean containsAll(Collection<?> c); 判断是否包含有整个集合c的全部元素
boolean addAll(Collection<? extends E> c); 添加集合c的所有元素到本集合中,如果集合有改变 就返回true
boolean removeAll(Collection<?> c);删除本集合中含有c集合的元素,如果集合有改变就返回true
boolean retainAll(Collection<?> c);只保留本集合中c集合中含有的元素,如果集合有改变就返回true
void clear();删除所有元素
操作数组的方法:
Object[] toArray(); 返回一个数组包含集合所有的元素
<T> T[] toArray(T[] a);返回一个数组包含集合所有的元素,运行时根据集合元素的类型指定数组的 类型
抽象类:AbstractCollection 实现Collection接口,主要实现contains(), isEmpty(), toArray(), remove(), clear() 这个几个操作。