java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用

Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明

Java中ListIterator和Iterator的区别以及ListIterator的应用 Iterator和ListIterator主要区别有: 一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。 二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。 三、ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator 没有此功能。 四、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。

public class TestListIterator {

public static void main(String[] args){

List list = new LinkedList ();

inits(list);

//Iterator迭代器

System.out.println("1、Iterator迭代器的正向遍历输出=======================");

Iterator it = list.iterator();

//1、正向输出

while(it.hasNext()){

System.out.print(it.next()+" ");

}

//1、正向输出,迭代器只能一次性使用,例如,当上面已经遍历输出一遍之后,下面的遍历就将没有任何输出

//

while(it.hasNext()){

//

System.out.print(it.next()+" ");

//

}

//换行

System.out.println();

System.out.println("=======================");

System.out.println("2、ListIterator迭代器的正向遍历输出=======================");

//ListIterator迭代器

ListIterator lIt = list.listIterator();

//此时在迭代器的最前面添加的,lIt.hasNext还访问不了

lIt.add("C");

lIt.add("Python");

//2、正向输出

while(lIt.hasNext()){

System.out.print(lIt.next()+" ");

}

//换行

System.out.println();

System.out.println("3、ListIterator迭代器的反向遍历输出=======================");

//3、反相输出

while(lIt.hasPrevious()){

System.out.print(lIt.previous()+" ");

}

//换行

System.out.println();

System.out.println("4、ListIterator迭代器的修改元素的应用=======================");

//4、ListIteraor迭代器可以修改元素

for(;lIt.hasNext();){

String str = lIt.next();

lIt.set(str+"heihei");

}

while(lIt.hasPrevious()){

System.out.print(lIt.previous()+" ");

}

//换行

System.out.println();

System.out.println("5、ListIterator迭代器的nextIndex的应用=======================");

//5、测试ListIterator中nextIndex的功能

while(lIt.hasNext()){

int index = lIt.nextIndex();

System.out.println(" "+index);

String str = lIt.next();

if(index == 1){

lIt.set(str+"wuranghao");

}

}

System.out.println("-----------------------");

//输出

while(lIt.hasPrevious()){

String str = lIt.previous();

System.out.print( str + ",");

}

System.out.println();

}

private static void inits(List list) {

list.add("1、Java");

list.add("2、C++");

list.add("3、C#");

}

} 在实现ListIterator中的一些特殊方法时,发现有很多需要我们注意的地方,例如,ListIterator中的add方法,下面将进行详细的介绍。 1、add方法 在我们获取到List的ListIterator迭代器后,直接使用add添加元素,添加元素的位置是当前next元素的前一个元素。 看如下的例子:

list.add("Java");

list.add("C++");

list.add("C#");

ListIterator lIt = list.listIterator();

//此时在迭代器的最前面添加的,lIt.hasNext还访问不了

lIt.add("C");

lIt.add("Python"); 当使用add方法添加元素后,如果使用如下的方法进行输出,结果为:C Python Java C++ C#

for(int i=0;i

while(lIt.hasNext()){

System.out.print(lIt.next()+" ");

} 从结果可以看出,此种情况下,next是没法取得我们刚刚添加进行的元素。 JDK文档对此方法的说明如下: 将指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1)。 这里就比较好理解了。 还有一些我们需要注意的地方,在使用ListIterator时,这些功能都需要我们进行测试,然后进行使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Quartz - 作业调度框架-插件化开发

背景大部分业务都是基于定时的任务,特别适合使用quartz这类框架解决定时问题。具体quartz的使用,看官方文档就可以了。下面谈谈对quartz插件化的封装。我们使用quartz.plugin。然后在quartz_jobs.xml方法里面定义了schedule,其中灵活的地方在…

cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程

一键重装虽好,但也不是万能的。俗语说:治标不治本。也许你懂得用各种一键备份还原工具重装,但不一定懂得手动GHOST重装。为此,吻妻为大家分享一下如何手动GHOST还原重装系统,本教程步骤虽多,但很多都是点“…

图解一步步安装SharePoint Foundation 2010

图解一步步安装SharePoint Foundation 2010 下载后在Windows Server 2008 R2上进行安装安装产品必须的一些组件,比原来好多了不用自己一个个下了。同意许可,此产品为不收费版本,不用序列号了!!!安装相关的…

MYSQ 查看 2 进制日志

方法 1: myqlbinlog filename; -----------------------------------------------------------------------------------------------------------------------------------------------

当身为老师的爸爸上课时......​

1 当身为老师的爸爸上课时......▼2 气氛突然微妙......▼3 隔壁的一家人都馋哭了!▼4 结束疫情隔离的你▼5 WOW!AMAZING!▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢?▼你点的每个赞,我都认真当成了喜欢

七招挽回受损WORD文档

七招挽回受损WORD文档在你试图打开一个Word文档时,如果系统没有响应,那么可能的原因是该文档已经损坏。此时,请试试笔者以下所述方法,或许能够挽回你的全部或部分损失。一、自动恢复尚未保存的修改Word提供了“自动恢复”功能&…

yum php fpm5.6,CentOS 7 yum 安装php5.6

配置yum源追加CentOS 6.5的epel及remi源。# yum install epel-release# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm以下是CentOS 7.0的源。# yum install epel-release# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm使用…

Handler和HandlerThread

1.什么是Handler? SDK中关于Handler的说明例如以下: A Handler allows you to sendand process Messageand Runnable objects associated with a threads MessageQueue.Each Handler instance is associated with a single thread and that threadsmessa…

amos里CFA可行性辨别结果怎么看_论文用问卷调查法,数据分析怎么做?

论文问卷数据的分析,看起来简单,好像每个人都会做。但是做起来还真的有点难度。很多初次使用问卷调查方法的人大多以为,问卷数据分析嘛,无外乎对单选题做做频率分析,看看选择不同的选项的人占比有多少。对于评分题目&a…

转:asp.net 负载平衡-Session相关

来自:http://www.cnblogs.com/zxylonely/archive/2009/12/23/1630197.htmlhttp://blog.csdn.net/lvlingwy/archive/2008/05/08/2418673.aspxhttp://bbs.ibeifeng.com/simple/index.php?t16926.html转自:http://sai5d.blog.sohu.com/131936651.html在WEB…

Hello Blazor:(10)按需加载JavaScript脚本

前言Blazor支持执行JavaScript脚本,通常是将脚本放在wwwroot/index.html(Blazor WebAssembly)或Pages/_Host.cshtml(Blazor Server)中。但是,这种方式会将所有JS方法用全局函数加载,即使某些方法只需要在特定组件中使用。既影响加载性能&…

只有学霸才懂的学习技巧,看完脑洞大开,绝对涨姿势!

▲ 点击查看法国生物学家乔治.居维叶曾说:“天才,首先是注意力。”事实上,除开那些逆天的天才之外,大部分人的智商,在先天因素的决定下,都是差不多的。但是专注力却可以因为后天的刻意训练,而有…

DOM Xerces类库使用方法

DOM Xerces类库使用方法Tuxedo中XML的历史  如 今随着XML逐渐成为主流的数据格式之一,自然而然地 Tuxedo将之作为一种基本缓冲类型予以支持。    Tuxedo 7.1 引入了XML缓冲类型,但迄今为止对于Tuxedo中的XML并无较多的论述。Tuxedo 7.1中并未携带真…

解析邻居的耳朵音乐地址(单页下载)

偶尔听歌的时候发现了一个很小众的音乐分享网站,邻居的耳朵,有个人的电台类型,属于音乐分享文字分享,觉得很不错。从域名来看,属于多米旗下的网站:http://ear.duomi.com/ 看来多米收购了很多这样的小站&am…

为什么电脑不能打字_嘉兴在线丨「生活经济学」为什么笔记本电脑能在任何国家的供电标准下运作,其他大部分电器却不能?...

【生活热搜】从日本背回来的电饭煲煮饭口感总是不对,用几天就坏了;英国邮回来的吹风机怎么都插不上电源只能闲置……如果你有从国外买家用电器的经历,你一定会发现很多电器因为每个国家或地区的供电标准不同而无法正常使用的情况。但笔记本电…

【DotNetMLLearn】.NET Core 人工智能系列-.NET Interactive环境介绍

在进入.NET Core 的人工智能应用开始前,我们先把环境搭建好,为以后的学习提供一个便利。作为一个.NET 程序员,或者其他编程语言的程序员,相信对IDE的依赖必不可少,如Visual Studio/Visual StudioCode , IntelliJ , Ecl…

php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用

废话就不多说 直接上代码,亲测好用原生:/*** curl发送htpp请求* 可以发送https,http,get方式,post方式,post数据发送*/public function dataRequest($url,$httpstrue,$methodget,$datanull){//初始化curl$ch curl_init($url);//字符串不直接输出&#x…

在程序员的道路上,义无反顾的努力,有思想的人,很多,好的想法,需要学习。(以此共勉)...

程序员:差距在哪里,你与开发高手的距离到底有多远?投递人 itwriter 发布于 2010-08-27 13:45 评论(19) 有5369人阅读 [收藏]开发者的技术成长是个永恒的话题。《如何成为一个专家级的开发者》文中虽然界定了专家的概念和开发者成长为专家级的…

2020届的毕业生怎么这么苦!

一提到毕业论文我们身上的每个细胞都在告诉自己这件事太麻烦了!每天要思考着选题、开题报告、查资料写稿、排版、答辩、做PPT......除了8000到20000的字数要求完成一篇毕业论文,要依次经历确定论文选题,提交开题报告查阅行业文献,…

线切割机上的DOS系统

昨天朋友的线切割机上的系统无法启用了。于是朋友叫我过去看看。哈,原来是DOS系统加上线切割机控制软件开机提示HIMEM.SYS未加载,所以EMM386.EXE未能启动。机器是很老的机器了,当然了配置也不需要太高了。因为这样的东西没有加载成功&#xf…