zoukankan      html  css  js  c++  java
  • 47. List中特有的方法

    集合的体系:
    --------------| Collection  单列集合的根接口
    ----------| List 如果实现了List接口的集合类,该类具备的特点是:有序,可重复
    ----------| Set  如果实现了Set几口的集合类,该类具备的特点:无序,不可重复

    list的特有方法:
        
        添加
           add(int index, E element)    把元素添加到指定索引的位置
           addAll(int index, Collection<? extends E> c)   根据索引把一个集合中的所有元素添加到另一个集合中
            
        删除
           remove(int index)      根据索引删除集合中的指定元素
        
        查看
           get(int index)        获取集合中指定索引处的元素
           subList(int fromIndex, int toIndex)  指定开始和结束位置,获取集合中的一些元素(包头不包尾)
           indexOf(Object o)     获取集合中指定元素第一次出现的位置(索引值)
           lastIndexOf(Object o)  获取集合中指定元素最后一次出现的位置(索引值)
                
        修改     
           set(int index, E element)  替换指定元素中的元素(element:修改后的值)
        
        迭代器
           listIterator()    返回列表中元素的列表迭代器
           listIterator(int index) 返回列表中指定元素的列表迭代器(index:开始位置)
                     
        总结:我们发现List接口中特有的方法都存在索引值,所以我们如果要

    listIterator特有的方法:
       
        hasPrevious() 判断是否有上一个元素
        previous()   指针先向下移动一位,再取出当前指针指向的元素
        next()     先取出当前指针指向的元素,指针再向下移动一位
        add()      把元素添加到当前的指针指向的位置
        set()      用指定元素替换 next 或 previous 返回的最后一个元素     

    注意:当我们开始迭代的时候,指针默认指定的是第一个元素

    下面我们来一段代码:

    public static void main(String[] args) {
            List list = new ArrayList();
            list.add("张三");
            list.add("李四");
            list.add("王五");
            
            ListIterator listit = list.listIterator();
            while(listit.hasNext()) {
                System.out.print(listit.next()+",");
            }
            System.out.println("");
            while(listit.hasPrevious()) {
                System.out.print(listit.previous()+",");
            }    
        }

    这时我们是不是感到很疑惑:为什么第二个循环输出王五呢?按照上面的说法,第二个循环只能取出李四和张三吗?

    首先我们来看看next的定义:

      next()     先取出当前指针指向的元素,指针再向下移动一位

    我们可以发现:当next去除最后一个元素的时候指针往下移动了一位,然后才判断没有元素了。

    按照上面的例子,这个时候的指针指向的是3(索引)

    我们再看previous方法的定义:

      previous()   指针先向下移动一位,再取出当前指针指向的元素

    我们可以发现,如果这个时候指针指向的是3,那么指针再向上移动一位,这个时候的指针指向的是2,所以输出了王五

  • 相关阅读:
    UVA 10480 Sabotage (最大流最小割)
    bzoj2002 [Hnoi2010]Bounce 弹飞绵羊 (分块)
    poj3580 SuperMemo (Splay+区间内向一个方向移动)
    bzoj1500: [NOI2005]维修数列 (Splay+变态题)
    hdu3436 Queue-jumpers(Splay)
    hdu4710 Balls Rearrangement(数学公式+取模)
    hdu1890 Robotic Sort (splay+区间翻转单点更新)
    zoj2112 Dynamic Rankings (主席树 || 树套树)
    poj3581 Sequence (后缀数组)
    notepa++ Emmet的安装方法
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8985193.html
Copyright © 2011-2022 走看看