美文网首页
集合(一)Collection

集合(一)Collection

作者: 机智的柠檬 | 来源:发表于2020-03-19 09:02 被阅读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集合

  • 无序、不可重复
  • Set的实现类 都是 线程不安全的。可以通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合,此操作最好在创建时候进行。
    SortedSet s = Collections.sychronizedSortedSet(new TreeSet());

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

HashSet

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

  • 不能保证元素的添加顺序
  • HashSet不是同步的,如果有两个或者两个以上的线程同时修改了HashSet集合,必须通过代码来保证其同步
  • 集合元素值可以为null

当向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

  • 有序、可重复
  • 可以存放null值
    包含的其他方法:
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

  • 基于数组实现List接口,可以理解为动态数组
  • 通过initialCapacity 参数设置数组的长度,当添加元素 超过 该数组的长度时 initialCapacity 会自动增加
  • 线程不安全的

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

initialCapacity 默认大小为 10

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

Vector

  • 古老的 与ArrayList 差不多
  • 线程安全的
Stack

继承 Vector
方法:

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

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

void push(Object item):添加元素到栈顶
LinkedList
  • 同时实现了 List接口与 Queue接口
  • 可以被当做 List 集合 双端队列 栈
  • 随机访问时候性能差
  • 插入删除方便

Queue

队列 FIFO

void add():

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

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

Object peek():队列尾部元素

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

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

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

PriorityDueqe
  • 违反了 FIFO
  • 按照 从大到小的顺序 进行排列 存放
  • 不允许插入 null 元素

相关文章

  • JAVA基础---Collection集合 List

    ##一 Collection集合 ### 01 集合体系结构 a:Collection 集合(单身汉集合) ...

  • Java基础之常用集合

    集合分为单列集合(Collection)和双列集合(Map),先说单列集合Collection Collecti...

  • Java实战开发篇-8 集合

    集合 一、简介 1.集合分为Collection集合和List集合(1)Collection是集合类的一个接口,它...

  • 集合框架

    Collection Collection集合是单列集合的顶层接口。Collection表示一组对象,这些对象也称...

  • 集合

    常用集合类 单列集合 Collection:Iterable 是单列集合类的根接口 Collection用于存储一...

  • Android中几种常用的集合类

    1.集合 Collection Collection是最基本的集合接口,一个Collection代表一组Objec...

  • Map集合框架

    Map集合与Collection集合的区别:Collection集合一次只能添加一个元素,也称单列集合。Map集合...

  • 哪些类继承了Collection接口

    Collection集合的基本结构: 1、Collection接口 Collection是最基本集合接口,它定义了...

  • 集合

    collection 和collections 1、java.util.Collection 是一个集合接口(集合...

  • 2.Collection、泛型

    主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 ...

网友评论

      本文标题:集合(一)Collection

      本文链接:https://www.haomeiwen.com/subject/walcyhtx.html