最近java发现自己有很多有关list的基础的函数都忘记了,赶快来总结一下!以便加强记忆!!!
1. ArrayList相关用法
ArrayList就是动态数组,实现了大小可变的数组。
① boolen add(E e)
将制定元素添加到此列表的尾部
②void add(int index, E element)
将制定元素插入此列表的指定位置
③void clear()
移出次列表中的所有元素
④Object clone()
返回次ArrayList实例的浅表副本。
⑤boolean contains(Object o)
如果此列表中包含制定元素,则返回true.
⑥ E get(int index)
返回此列表指定位置上的元素
⑦ int indexOf(Object o)
返回次列表中首次出现指定元素的索引,如果此列表不包含元素,则返回-1;
⑧boolean isEmpty()
如果此列表中没有元素,则返回 true
⑨E remove(int index)
移除此列表中指定位置上的元素
10. boolean remove(Object o)
移除此列表中首次出现的指定元素(如果存在)。
11. protected void removeRange(int fromIndex, int toIndex)
移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。
12. E set(int index, E element)
用指定的元素替代此列表中指定位置上的元素。
13. int size()
返回此列表中的元素数。
注意: ArrayList的下标是从0开始。
2. LinkedList相关用法
LinkedList是双向链表,链表的每个节点都包含了对前一个和后一个元素的饮用。
- public LinkedList()
生成空的链表 - getFirst() 获取链表的第一个元素getLast()获取链表的最好一个元素
- subList(index1,index2) 从链表生成子表
- add(Object E) 将元素添加到链表的最后
- add(int index, Object element)添加元素到指定索引位置
- addFirst(E),addLats(E)把链表当做栈或者队列使用。
- remove(),removeLast(),removeFirst() 删除元素
- clear()清空LinkedList
- peek()返回队列首部元素
- poll() 取出队首元素
例子
**问题: **Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
利用ArrayList实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
addlevel(root, 0, result);
for(int i = 0, j = result.size() - 1; i < j; i++) {
result.add(i, result.remove(j));}
return result;
}
public static List<List<Integer>> addlevel(TreeNode root, int level, List<List<Integer>> result){
if (root == null) return result;
if (result.size() == level){
result.add(new ArrayList<Integer>());
}
result.get(level).add(root.val);
addlevel(root.left, level+1, result);
addlevel(root.right, level+1, result);
return result;
}
}
利用LinkedList:
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if(root==null) return result;
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while(q.size()>0){
List<Integer> list = new ArrayList<>();
int size = q.size();
for(int i=0; i<size; i++){
TreeNode node = q.poll();
list.add(node.val);
if(node.left!=null) q.add(node.left);
if(node.right!=null) q.add(node.right);
}
result.add(0,list);
}
return result;
}