集合的体系:
--------------| 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,所以输出了王五

47. List中特有的方法的更多相关文章

  1. 49. ArrayList LinkedList中特有的方法

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

  2. 20、List集合中特有的方法

    List里面的特有方法简介 List中除了Collection里面的方法以外,内部还有一些方法,通过这些方法,开发者可以更方便的操作List接口的实现类. package com.monkey1024 ...

  3. Java中的List接口特有的方法

    import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...

  4. List接口中特有方法

    import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...

  5. 为什么不能在init和dealloc函数中使用accessor方法

    前言 为什么不要在init和dealloc方法中调用getter和setter:Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor M ...

  6. 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...

  7. 千万不要误用 java 中的 HashCode 方法

    刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...

  8. Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)

    本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...

  9. Java中的native方法

    博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...

随机推荐

  1. Linux - 退出vim界面

    参考: https://blog.csdn.net/achi010/article/details/72775721 https://www.cnblogs.com/dalaoban/p/938130 ...

  2. delphi 打印 PDevMode 说明

    //PDevMode = _devicemodeW;// _devicemodeW = record// dmDeviceName: array[0..CCHDEVICENAME - 1] of Wi ...

  3. javascript基础总结之实例(二)

    div的显示和隐藏 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  4. spring boot基于DRUID数据源密码加密及数据源监控实现

    前言 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效 ...

  5. noip2007 tg day1t1 统计数字

    题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出 ...

  6. 解决$.ajax请求在ie8下失效问题

    ie8下默认把跨域请求拦截了,需要用jquery.xdomainrequest.min.js 处理跨域问题,需放在jq下引入 http://cdnjs.cloudflare.com/ajax/libs ...

  7. php开发面试题---php面向对象详解(对象的主要三个特性)

    php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...

  8. shell重定向的顺序问题

    三个默认的文件描述符 0: stdin(标准输入) 1: stdout(标准输出) 2: stderr(标准错误输出) 系统中这3个文件描述符所对应的文件: 重定向顺序 示例脚本 echo " ...

  9. (转) C#中使用throw和throw ex抛出异常的区别

    通常,我们使用try/catch/finally语句块来捕获异常,就像在这里说的.在抛出异常的时候,使用throw和throw ex有什么区别呢? 假设,按如下的方式调用几个方法: →在Main方法中 ...

  10. 拾遗:Docker 基本应用

    https://wiki.gentoo.org/wiki/Docker 检查内核内核选项 exec /usr/share/docker/contrib/check-config.sh 使用 btrfs ...