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,所以输出了王五
47. List中特有的方法的更多相关文章
- 49. ArrayList LinkedList中特有的方法
集合的体系:--------------| Collection 单列集合的根接口 ----------| List 如果实现了List接口的集合类,该类具备的特点是:有序,可重复 ------|A ...
- 20、List集合中特有的方法
List里面的特有方法简介 List中除了Collection里面的方法以外,内部还有一些方法,通过这些方法,开发者可以更方便的操作List接口的实现类. package com.monkey1024 ...
- Java中的List接口特有的方法
import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...
- List接口中特有方法
import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...
- 为什么不能在init和dealloc函数中使用accessor方法
前言 为什么不要在init和dealloc方法中调用getter和setter:Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor M ...
- 浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...
- 千万不要误用 java 中的 HashCode 方法
刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...
- Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)
本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
随机推荐
- AtCoder ABC 131F Must Be Rectangular!
题目链接:https://atcoder.jp/contests/abc131/tasks/abc131_f 转自博客:https://blog.csdn.net/qq_37656398/articl ...
- github for windows 简单的客户端托管代码
1)创建github账户 登录https://github.com,只需用户名.注册邮箱和登录密码便能注册一个属于自己的github(之后需要到注册邮箱中进行确认,非常喜欢这种注册方式,简单而且安全) ...
- informix 计算 日期之差
原文地址:http://blog.chinaunix.net/uid-678894-id-3138829.html https://blog.csdn.net/zhengqiqiqinqin/arti ...
- Flume速览
Flume是一个分布式的.可靠的.高可用的海量日志采集.聚合和传输的系统.Java实现,插件丰富,模块分明. 数据流模型:Source-Channel-Sink 事务机制保证了消息传递的可靠性 一.基 ...
- leetcood学习笔记-27-移除元素
题目: 第一次提交: class Solution: def removeElement(self, nums, val: int) -> int: for i in range(len(num ...
- mongodb数据库管道操作
1.$project(修改文档的结构,可以用来重命名.增加或删除文档中的字段) db.order.aggregate([ { $project:{ rade_no:1, all_price:1} } ...
- Windows win32 API 类库 硬件
// 硬件 Win32_Processor, // CPU 处理器 Win32_PhysicalMemory, // 物理内存条 Win32_Keyboard, // 键盘 Win32_Pointin ...
- 攻防世界 MISC篇
Excaliflag 一张图片,winhex打开没什么发现,分值不高,应该属于常见的图片隐写题目.如果对于图片的格式有详细的了解,应该很容易就能够知道了属于最低有效位(LSB)隐写,下面是通过phot ...
- flutter 调用摄像头和照片
设置一个按钮调用 打开showCupertinoModalPopup FloatingActionButton(onPressed: (){ _showDialog(context); }, chil ...
- 51nod 1437 迈克步——单调栈
有n只熊.他们站成一排队伍,从左到右依次1到n编号.第i只熊的高度是ai. 一组熊指的队伍中连续的一个子段.组的大小就是熊的数目.而组的力量就是这一组熊中最小的高度. 迈克想知道对于所有的组大小为x( ...