集合(一)Collection

2020-03-19  本文已影响0人  机智的柠檬

集合框架图

image.png

Collection

接口 是Set List Queue的 父接口

方法:
- boolean add(Object o):向集合中添加元素,添加成功返回true
- boolean addAll(Collection c):向集合中添加集合c ,添加成功返回true
- void clean():将集合清空,集合长度变为0
- boolean contains(Object o):判断集合是否包含 o
- boolean containsAll(Collection c):判断集合是否包含集合c
- boolean isEmpty():判断集合是否为空
- boolean remove(Objece o):删除指定元素o,当集合中包含多个o时,只删除第一个
- boolean removeAll(collection c):从集合中删除集合C中包含的所有元素,相当于A-(A∩C),如果删除一个或者一个以上的元素,则返回true
- boolean retainAll(Collection c):从集合中删除集合c中不包含的元素,相当于取交集;如果删除了一个或者一个以上的元素,则返回true
- int size():返回集合的长度
- Object[] toArray():将集合转化为数组
- Iterator iterator: 返回一个Iterator 迭代对象,用于遍历集合里面的元素。
集合的迭代
Collection<String> c = new ArrayList();
c.add("a");
c.add("b");
c.add(""d);
//方式一:
for(String str: c){
    System.out.println(str);
} 
//方式二:
Iterator it = c.itetator();
while(it.hasNext()){
    str = it.next();
    System.out.println(str);
}

Set集合

其他的完全与Collection相同相当于一个罐子, 不能记住每个元素添加顺序, 如果试图添加相同的元素 会添加失败add()方法返回 false, 且元素不会被添加。

HashSet

HashSet 按Hash算法来存储集合中的元素
特点:

当向HashSet中添加元素时,HashSet会调用对象的hashCode()方法来得到该对象的hashCode值,根据该值来决定在HashSet中的存储位置。

如果有两个元素通过equals()方法返回true,但是hashCode()的值不同,那么HashSet同样会把他们放在不同的位置。

即HashSet 中元素相同是 equals()方法比较相等并且hashCode()返回值相同。

LinkedHashSet

1、是HashSet的子类 也是根据元素的 hashCode值存放
2、使用链表来维护元素的次序
3、当遍历集合时 会按照元素的添加顺序来访问元素
4、LinkedHashSet 性能略低于 HashSet ,但是在迭代访问的时
候有很好的性能。

SortedSet

TreeSet

TreeSet 实现了 SortedSet接口
集合内的元素是有序的、并且是同一种类型。

当向TreeSet添加元素e时,会调用该对象的compareTo(Object obj)方法与容器中的元素进行一一比较,然后根据红黑树结构找到他们的位置。compareTo()方法判断相等 ,那么添加不了。

采用红黑树算法来存储集合元素。

自然排序:升序

定制排序:

TreeSet是根据元素的实际大小进行排序的。

方法

与HashSet相比,添加了访问第一个、前一个、后一个、最后一个元素的方法,并且提供了三个从TreeSet中取子TreeSet的方法。

Comparator comparator():如果TreeSet才用了定制排序,则返回定制排序所使用的的Comparator;如果使用了自然排序,则返回null。
Object first():返回集合的第一个元素
Object last():返回集合的最后一个元素
Object lower(Object e): 比 e 小的  集合里面最大的元素  e 可以不是集合中的元素
Object higher(Object e): 大于 e 的最小的元素
SortedSet subSet(Object a,Object b):返回从 a  到  b 的子集合  左闭右开
SortedSet headSet(Object e ): 返回小于e 的元素的集合
SortedSet tailSet(Obejct e ): 返回大于等于e的元素的集合。

List

Object set(int index, Object element):替换 index 位置的元素  并且返回 被替换的旧元素

Object  remove(int index):删除Index处的元素,并且返回该元素

void add(int index, Object  element):将元素添加到index处,原来集合index后的元素全部往后移

boolean addAll(int index, Collection c):在index处添加集合c

int indexOf(element):第一次出现的element的位置

int lastIndexOf(element):最后一次出现的位置

List subList(from, to): 返回子集合  左闭右开

void sort(Comparator c): 根据 Comparator 参数对List 集合 排序

void replaceAll(UnaryOperator operator):根据operator指定的计算规则重新设置List集合的所有元素。

ArrayList

如果一次性添加 很多很多元素 可以通过 ensureCapacity(int minCapacity)一次性的增加 intialCapacity

initialCapacity 默认大小为 10

void trimToSize():调整集合大小为当前元素的个数。

Vector

Stack

继承 Vector
方法:

Object peek():返回第一个元素

Object  pop():返回栈顶元素 并且删除

void push(Object item):添加元素到栈顶
LinkedList

Queue

队列 FIFO

void add():

Object element():获取队列的头部元素

boolean offer(): 添加元素  当指定队列长度时 比 add方法好

Object peek():队列尾部元素

Object poll():删除最后一个  并且返回

Object remove(): 删除第一个  并且返回
Deque

双端队列
实现类有ArrayDeque:创建时候 可以传递 numElement参数
指定队列长度
不指定 默认为16

PriorityDueqe
上一篇 下一篇

猜你喜欢

热点阅读