java8-集合和列表,关联
Hierarchy of Collection Framework
- List
- ArrayList
- LinkedList
- Vector
- Stack
- Queue
- PriorityQueue
- ArrayDeque
- Set
- HashSet
- LinkedHashSet
- TreeSet
ArrayList
- 有顺序的列表,动态数组,元素可随机访问、增加、删除。
- 可以包含重复元素。
元素操作
- add(a-element) 添加元素到末尾
- add(index, a-element) 插入元素到指定位置
- addAll(Collection<? extends E> c)
-
addAll(index, Collection<? extends E> c)
-
get(index) 获取
- remove(index) 删除
- removeRange(int fromIndex, int toIndex)
- remove(Object o)
-
removeAll(Collection<?> c)
- clear() 清空所有元素
-
size() 元素数目
- subList(int fromIndex, int toIndex) 获取子列表
- toArray(new T[0]) 转换为数组
搜索
- contains(Object o) 是否包含目标对象,通过
o.equals(e)
比较。 - indexOf(Object o)
- lastIndexOf(Object o)
排序
- Collections.sort(a-arraylist)
1 2 3 4 5 6 7 8 | ArrayList<String> a = new ArrayList<String>(); a.add("111"); a.add("222"); a.add("333"); System.out.println(a); a.remove(1); System.out.println(a); System.out.println("a[0] = " + a.get(0)); |
iterator 遍历
1 2 3 4 | Iterator<String> it = arraylist.iterator(); while(it.hasNext()) { System.out.println(it.next()); } |
LinkedList
Vector
和 ArrayList 类似,但是包含更多不在Collections 的方法。
Stack
- push(a-element)
- pop()
队列 Queue
PriorityQueue
- 队列,先进先出。
-
禁止保存 null
- peek() 返回队首元素,但是不删除它
- poll() 返回队首元素,删除它
- toArray
双向队列 Deque
- 继承自 Queue
- 队列2边都可以操作。
ArrayDeque
- add(e) / addLast(e) 队尾入队
- addFirst(e) 队首入队
- getFirst() 出队
-
getLast() 队尾出队
- peek
- peekFirst
- peekLast
- poll
- pollFirst
-
pollLast
- clear()
Set
- 元素唯一
- 无序
HashSet
- add(e)
-
remove(e)
- size()
- isEmpty()
-
clear()
- contains(Object o)
LinkedHashSet
- 允许 null 元素
- 有序(插入顺序)
SortedSet
- 和 Set 类似,除了支持排序。
TreeSet
-
比 HashSet 更快些,使用树作为存储结构。
- add(e)
-
remove(obj)
- first()
- last()
- pollFirst()
- pollLast()
- ceiling(e) 返回
<= e
,最近的元素 - floor(e) 返回
>= e
,最近的元素 - lower(e) 返回
< e
,最近的元素 -
higher(e) 返回
> e
,最近的元素 - headSet(E toElement)
- headSet(E toElement, boolean inclusive)
- tailSet(E fromElement)
-
tailSet(E fromElement, boolean inclusive)
- iterator()
-
descendingIterator()
- isEmpty()
-
size()
- contains(Object o)
- clear()