目的:
在 Java 中为了方便用户操作各个数据结构,引入了类集的概念,有时候就可以把类集称为 java对数据结构的实现
类集中最大的几个操作接口:Collection、Map、Iterator,这三个接口是使用的最重点的接口。
所有的类集操作的接口或类都在 java.util 包中。
Collection接口:
Collection 接口是在整个 Java 类集中保存单值的最大操作父接口,里面每次操作的时候都只能保存一个对象的数据。
定义:
public interface Collection <E> extends Iterable <E>
方法:
在开发中不会直接使用 Collection 接口。而使用其操作的子接口:List(允许重复)、Set(不允许重复)
List接口:
List 是 Collection 的子接口,里面的所有内容都是允许重复的。
定义:
public interface List <E> extends Collection <E>
方法:
常用的实现类有如下几个: · ArrayList(95%,线程不安全)、Vector(4%,线程安全)、LinkedList(1%)
ArrayList类:
ArrayList 是 List 接口的子类,此类的定义如下:(使用数组结构)
public class ArrayList <E> extends AbstractList <E> implements List <E>, RandomAccess,Cloneable, Serializable
方法:
add(int index, E element) 将指定元素插入到指定位置中
add() 将指定元素插入到末尾
get() 返回指定位置的元素
addAll(int index, Collection<? extends E> c) 将指定集合插入到指定位置
addAll(Collection<? extends E> c) 将指定集合插入到末尾
clear() 清除列表中所有的元素
clone() 返回ArrayList实例的浅表副本,([100, 300, 250, 400])
contains(Object O) 判断列表中是否包含此元素
ensureCapacity(int minCapacity) 如果有必要,增加ArrayList实例的容量
indexof(Object O) 返回指定元素在列表中第一次出现的索引,如没有返回-1
lastIndexOf(Object o) v返回指定元素在列表中最后一次出现的位置,如没有返回-1
isEmpty() 判断列表中是否为空
remove(int index) 根据指定下标删除元素
remove(Object O) 根据指定元素删除第一个匹配项
removeAll(Collection<?> c) 删除指定几个的所有元素
removeIf(Predicate<? super E> filter) 删除指定条件的元素
removeRange(int fromIndex, int toIndex) 删除指定范围的元素
retainAll(Collection<?> c) 仅保列表中包含在指定集合中的元素
set(int index, E element) 将指定下标替换为指定元素
size() 返回列表的元素数
subList(int fromIndex, int toIndex) 返回指定范围的视图
toArray() 返回数组
toArray(T[ ] a) 返回包含此列表中所有元素的数组(
trimToSize() 将ArrayList实例的大小调整为当前列表的大小
Vector 类:
定义:使用数组结构,增删慢查找快
public class Vector extends AbstractList implements List, RandomAccess, Cloneable,Serializable
方法:同ArraList一样,只不过多了关于增量的内容
Vector(int initialCapacity, int capacityIncrement) 初始长度,以及增量
LinkedList 类
使用双向链表结构,增删快,查找慢,可以看为栈和队列
定义:
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable,Serializable
方法:
基本比前两个相同,它提供了几个特殊方法
addFirst(E e) 在列表开头插入元素
addLast(E e) 在列表末尾插入元素
removeFirst() 删除并返回列表第一个元素
removeLast() 删除并返回列表最后一个元素
push(E e) 压栈
pop() 弹栈
getFirst() 获得第一个元素
getLast() 获得最后一个元素
Iterator 类
Iterator 迭代器,获取列表中每个元素
方法:
hasNext() 是否有下一个
next() 指针下移
remove() 删除元素
ListIterator类
除上面方法还有
previous() 指针上移
set(E e) 将当前指针指向元素替换为指定元素
ArrayList<Integer> x = new ArrayList<>();
Iterator<Integer> iterator = x.iterator();
while (iterator.hasNext()){
int y = iterator.next();
System.out.println(y);
}
forEach
增强for循环,用于迭代数组或集合
语法:
for(数据类型 变量名:集合或名称){}
Set 接口
不包含重复元素的集合,方法基本上还是与 Collection接口相同
如果想输出其中元素,则使用iterator方法迭代或者使用toArray方法转成数组
HashSet子类:
散列存放的存储方式(哈希表)(内置HashMap)
无法保证顺序是存储顺序
方法:没什么特殊的方法
TreeSet 子类:
采用有序的二叉树存储(基于TreeMap)
基本类型可以进行排序
如果要想对自定义类型(对象)进行排序,则必须在 Person 类中实现 Comparable 接口。
重写toCompare()方法 放回负数,this小,返回正数,this大
方法:都也差不多