小总结

最近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是双向链表,链表的每个节点都包含了对前一个和后一个元素的饮用。

  1. public LinkedList()
    生成空的链表
  2. getFirst() 获取链表的第一个元素getLast()获取链表的最好一个元素
  3. subList(index1,index2) 从链表生成子表
  4. add(Object E) 将元素添加到链表的最后
  5. add(int index, Object element)添加元素到指定索引位置
  6. addFirst(E),addLats(E)把链表当做栈或者队列使用。
  7. remove(),removeLast(),removeFirst() 删除元素
  8. clear()清空LinkedList
  9. peek()返回队列首部元素
  10. 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;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值