Java中的集合主要分为四类:
总结
List:ArrayList和LinkedList
Queue:LinkedList
Stack:LinkedList
Map:HashMap
Set:HashSet
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)+",");
}
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)+",");
}
队列是一个先进先出的集合
使用 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() 当队列是空的时候,抛出异常
栈主要是一个后进先出的动作,也就是说,添加还是在队列末尾,取数据也是在队列末尾
如果使用 LinkedList 也是可以实现的,主要还是 Deque
Deque<Integer> stack = new LinkedList<>();
入栈
stack.offerLast(1);
出栈
stack.pollLast();
取栈顶元素
stack.peekLast()
存储键值对
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<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+",");
}