文章目录
Collection
Java中的集合主要分为四类:
- List列表:有序的,可重复的;
- Queue队列:有序,可重复的;
- Stack栈:有序,可重复;
- Set集合:不可重复;
- Map映射:无序,键唯一,值不唯一。
总结
List:ArrayList和LinkedList
Queue:LinkedList
Stack:LinkedList
Map:HashMap
Set:HashSet
List
ArrayList
1.添加元素
list.add(E); // 在列表的末尾添加元素E
2.删除元素
list.remove(index); // 删除位置为index的元素,后面每个元素的index减1。也就是之后每个元素向前挪一位
3.修改元素
list.add(index,E); // 在指定的位置index添加元素E,如果index大于列表的容量,就会抛出异常
4.查找元素
for (Integer num : list) {
System.out.print(num+",");
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+",");
}
LinkedList
List<Integer> list = new LinkedList<>();
1.添加元素
list.add(E); // 在队列末尾添加元素
list.add(index,E); //在index位置插入元素,之后每一个元素的index都加1
list.add(0,0); //在队首添加元素0
2.删除元素
list.remove(index); // 删除位置是index的元素
3.修改元素
list.set(index,E); //
4.查找元素
E e = list.get(index);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+",");
}
Queue
队列是一个先进先出的集合
LinkedList
使用 LinkedList
实现队列
Queue<Integer> queue = new LinkedList<>();
1.元素加入队尾
queue.offer(1);
如果使用 LinkedList
来实现,offer(E)
底层也就是 add(E)
,而 add(E)
则是插入在链表的尾部。
如果队列的容量是受限的,那么则会抛出异常。
2.取出队首元素
Integer num = queue.poll();
如果队列非空,队首元素出队列,返回队首元素;如果队列是空,返回null
3.返回队首元素
Integer num = queue.peek();
与 poll()
相比,peek()
不删除队首元素,直接返回队首元素
4.删除队首元素
queue.remove();
与 poll()
相比,remove()
当队列是空的时候,抛出异常
PriorityQueue
Stack
栈主要是一个后进先出的动作,也就是说,添加还是在队列末尾,取数据也是在队列末尾
Deque
如果使用 LinkedList
也是可以实现的,主要还是 Deque<Integer>
Deque<Integer> stack = new LinkedList<>();
入栈
stack.offerLast(1);
出栈
stack.pollLast();
取栈顶元素
stack.peekLast()
Map
存储键值对
HashMap
Map<Integer,Integer> map = new HashMap<>();
1.添加元素
map.put(K, V); // 添加元素
map.put(1, 2);
2.删除元素
map.remove(K); // 删除key为K的键值对
map.remove(1);
3.修改元素
map.put(K, newValue); // 修改key为K的值
map.put(1, 6);
4.查找元素
for(Integer key : map.keySet()) {
System.out.println("("+key+","+map.get(key)+")");
}
Set
没有重复元素
HashSet
Set<Integer> set = new HashSet<>();
1.增加元素
set.add(E);
set.add(1); // 添加两个一样的元素仅仅添加1个
set.add(1);
2.删除元素
set.remove(E);
set.remove(1);
3.查找元素
boolean isInSet = set.contains(2);
for (Integer num : set) {
System.out.print(num+",");
}