java集合(一) Collection

java集合(一) Collection,第1张

目录

 一、Collection及其子类示意图

二、Set

1、HashSet

2、LinkedHashSet

3、TreeSet

三、Queue

1、ArrayDeque

2、PriorityQueue

三、List

1、ArrayList

2、LinkedList

3、Vector

4、Stack


 

 一、Collection及其子类示意图
Collection及其子类示意图

 示意图说明:

  • 虚线方框表示该类一个接口,实线方框表示的是实现类;
  • 实线箭头表示的是继承至某一个类,虚线箭头表示的是实现某一个接口;
  • 实现类中列出了常用方法极其返回值类型,具体说明如下所示。
二、Set 1、HashSet
  • HashSet基于HashMap来实现的,是一个不允许有重复元素的集合;
  • HashSet允许有null值;
  • HashSet是无序的,即不会记录插入的顺序;
  • HashSet不是线程安全的;
  • HashSet实现了Set接口。
HashSet常用接口
接口名返回值类型说明
add(E e)boolean往集合中添加元素e
remove(Object o)boolean

从集合中移除元素o

contains(Object o)boolean判断集合中是否存在某元素
size()int获取集合的大小
isEmpty()boolean判断集合是否为空
clear()void清除集合中的所有元素
2、LinkedHashSet
  • LinkedHashSet根据hashCode值来决定元素的存储位置;
  • LinkedHashSet使用了双向链表维护,所以是有序的,可以保持元素的插入顺序;
  • LinkedHashSet元素不可重复;
  • LinkedHashSet是非线程安全的。
LinkedHashSet常用接口
接口名返回值类型说明
add(E e)boolean往集合中添加元素
remove(Object o)boolean从集合中移除某元素
contains(Object o)boolean判断集合中是否存在某元素
size()int获取集合的大小
isEmpty()boolean判断集合是否为空
clear()void清楚集合中的元素
3、TreeSet
  • TreeSet是一个有序没有重复元素的Set集合;
  • TreeSet中key不能为空,value可以为null
  • TreeSet具有排序功能,支持2种排序方式:自然排序或根据创建TreeSet时提供的Comparator进行排序,取决于使用的构造方法。
TreeSet常用接口
接口名返回值类型说明
add(E e)boolean往集合中添加元素
addAll(Collection c)boolean通过集合添加元素
remove(Object o)boolean从集合中删除元素
contains(Object o)boolean查找集合中是否包含某元素
size()int          返回集合的大小
isEmpty()boolean判断集合是否为空
clear()void清除集合中的所有元素
first()E获取集合的一个元素
last()E获取集合的最后一个元素
floor(E e)E返回小于或等于给定键值的最大键值
ceiling(E e)E返回大于或等于给定键值的最小键值
lower(E e)                 E返回严格小于给定键值的最大键值
higher(E e)E返回严格大于给定键值的最小键值
pollFirst()E获取第一个值并移除第一个值
pollLast()E获取这个值并移除这个值
spliterator()Spliterator拆分set元素,并逐个迭代他Queue
三、Queue 1、ArrayDeque
  •  ArrayDeque是Deque接口的一个实现,使用了可变数组,无容量大小限制,容量按需增长;

  • 非线程安全队列,无需同步策略,不支持多线程安全访问;

  • 当作用于栈时,性能优于Stack;当作用于队列时,性能优于LinkedList;

  • 两端都可以 *** 作;

  • 不能存储null;

  • 支持双向迭代器遍历。

ArrayDeque常用接口
接口名返回值类型说明
添加元素
addFirst(E e)void在数组前面添加元素
addLast(E e)void在数组后面添加元素
offerFirst(E e)boolean在数组前添加元素,并返回是否添加成功
offerLast(E e)boolean在数组后添加元素,并返回是否添加成功
删除元素
removeFirst()E删除数组第一个元素,并返回删除元素的值,如果元素为null,将抛出异常
removeLast()E删除数组最后一个元素,并返回删除元素的值,如果元素为null,将抛出异常
pollFirst()E删除第一个元素,并返回删除的元素的值,如果元素为null,将返回null
pollLast()E删除最后一个元素,并返回删除元素的值,如果元素为null,将返回null
removeFirstOccurrence(Object o)boolean删除第一次出现的指定元素
removeLastOccurrence(Object o)boolean删除最后一次出现的指定元素
获取元素
getFirst()E获取第一个元素,如果没有将抛出异常
getLast()E获取最后一个元素,如果没有将抛出异常
peekFirst()E获取第一个元素
peekLast()E获取最后一个元素
队列 *** 作
add(E e)boolean在队列的尾部添加一个元素(调用addLast()
offer(E e)boolean在队列的尾部添加一个元素,并返回是否成功(调用offerLast()
remove()E删除队列中第一个元素,并返回该元素的值,如果元素为null,将抛出异常(调用的removeFirst()
poll()E删除队列中的第一个元素(调用的是pollFirst())
element()E获取第一个元素(调用的getFirst()
peek()E获取第一个元素(调用的是peekFirst()
栈 *** 作
push(E e)void入栈(调用的是addFirst()
pop()E出栈(调用的是removeFirst())
其余集合方法
size()int返回集合中元素的个数
isEmpty()boolean判断集合是否为空
iterator()Iterator迭代器,从前往后迭代
descendingIterator()Iterator迭代器,从后往前迭代
contains(Object o)boolean判断队列中是否出现某元素
toArray()Object[]将集合转化为数组
clear()void清空队列
clone()ArrayDeque克隆某集合
2、PriorityQueue
  • 优先级队列在插入的时候,数据按关键词有序排列,插入新数据的时候,会自动插入到合适的位置保证队列有序(升序或降序)。
  • 使用二叉小顶(大顶)堆来实现。
PriorityQueue常用接口
接口名称返回值类型说明
add(E e)boolean往集合中添加一个元素,不成功会抛出异常
offer(E e)boolean往集合中添加元素,如果插入元素为null将抛出异常
peek()E返回集合第一个元素
remove(Object o)boolean移除集合中的指定元素
poll()E删除一个元素,并返回删除的元素
contains(Object o)boolean判断是否包含某元素
toArray()Object[]转换成数组
size()int返回集合的大小
clear()void清空集合

indexOf(Object o)

int查询某个对象的索引
四、List 1、ArrayList
  • ArrayList是通过数组实现的,是可变长的数组,与普通数组得区别就是它没有固定的大小限制(动态数组)
  • ArrayList不是线程安全的;
  • ArrayList数组的索引值从0开始。
ArrayList常用接口
接口名返回值类型说明
add(E e)boolean在集合尾部插入元素
add(int index, E element)void在指定位置插入元素
get(int index)E返回集合中指定下标的元素
set(int index, E element)E修改集合中指定下标的元素值
remove(int index)E删除集合中指定位置的元素
remove(Object o)boolean删除集合中第一次出现的对象o
size()int获得集合的大小
isEmpty()boolean判断集合是否为空
contains(Object o)boolean判断集合是否包含某元素
indexOf(Object o)int返回第一次出现的指定元素的下标,不存在则返回-1
lastIndexOf(Object o)int返回最后一次出现的指定元素的下标
toArray()Object[]将集合转化为数组
clear()void清空集合中的元素
2、LinkedList
  • LinkedList是基于双向循环链表实现的,除了可以当作链表 *** 作外,它还可以当作栈、队列和双端队列来使用;
  • LinkedList是非线程安全的,只在单线程下适合使用;
  • LinkedList的底层是通过链表来实现的,因此它的随机访问速度比较差,但插入删除的速度很快。
  • 链表可以分为单向链表、双向链表以及循环链表
LinkedList常用接口
接口名返回值类型说明
addFirst(E e)void在集合首添加一个指定的元素
addLast(E e)void在集合尾部添加一个指定的元素
add(E e)boolean在集合尾部添加一个指定元素
add(int index, E element)void在指定索引处添加指定元素
getFirst()E返回集合中的第一个元素,如果集合为空将抛出异常
getLast()E返回集合中的最后一个元素,如果集合为空将抛出异常
get(int index)E获得指定索引的元素
set(int index,E element)E修改指定索引位置的元素
removeFirst()E移除并返回集合的第一个元素
removeLast()E移除并返回集合的最后一个元素
remove(Object o)boolean移除集合中的指定元素
remove(int index)E移除指定索引处的元素
contains(Object o)boolean判断集合中是否包含某元素
size()int返回集合的大小
clear()void清除集合中的所有元素
indexOf(Object o)int返回指定元素第一次出现时的索引值
lastIndexOf(Object o)int返回指定元素最后一次出现的索引值
队列 *** 作
peek()E获取队首元素,如果队列为空,则返回null
element()E获取队首的元素
poll()E获取并移除队首元素,如果队列为空则返回空
remove()E移除队首元素(调用的是removeFirst())
offer(E e)boolean在队尾添加元素
双端队列 *** 作
offerFirst(E e)boolean在队首添加元素
offerLast(E e)boolean在队尾添加元素
peekFirst()E获取队首元素
peekLast()E获取队尾元素
pollFirst()E获取并移除队首元素
pollLast()E获取并移除队尾元素
栈 *** 作
push(E e)void将元素压入栈(调用的是addFirst())
pop()E元素出栈(调用的是removeFirst())
3、Vector
  • Vector可实现自动增长的对象数组,支持相关的添加、删除、修改、遍历等功能;
  • Vector提供了随机访问的功能;
  • 与ArrayList不同,Vector中的 *** 作是线程安全的。
Vector常用接口
接口名返回值类型说明
get(int index)E获得指定位置的元素
set(int index, E element)E修改指定位置的元素
add(int index, E element)void在指定位置添加元素
remove(int index)移除指定位置的元素
addElement(E obj)void在集合末尾插入元素
insertElementAt(E obj, int index)void在指定位置插入元素
elementAt(int index)E返回指定元素的下标
firstElement()E返回集合的第一个元素
lastElement()E返回集合的最后一个元素
setElementAt(E obj, int index)void修改指定位置的元素
removeElementAt(int index)void移除指定位置的元素
removeElement(Object obj)boolean移除指定元素
removeAllElements()void移除集合中的所有元素
size()int返回集合的大小
isEmpty()boolean判断集合是否为空
contains(Object o)boolean判断集合是否包含某元素
indexOf(Object o)int返回指定元素的下标
lastIndexOf(Object o)int返回某元素最后一次出现的下标
toArray()Object[]将集合转化成数组
toSting()String将集合转化成字符串
clear()void清空集合中的元素
4、Stack
  • 实现了一个标准的先进后出的栈
Stack常用接口
接口名称返回值类型说明
push(E item)E入栈
pop()出栈
peek()E返回栈顶元素
empty()boolean判断栈是否为空
search(Object o)int在栈中查找元素

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存