当前位置: 首页 > 编程日记 > 正文

Java学习总结:54(集合输出)

集合输出

在Java中,集合的输出操作有四种形式:Iterator输出、ListIterator输出、foreach(加强型for循环)输出、Enumeration输出。

迭代输出:Iterator

Iterator(迭代器)是集合输出操作中最常用的接口,而在Collection接口中也提供了直接为Iterator接口实例化的方法(iterator()),所以任何集合类型都可以转换为Iterator接口输出。
在Iterator接口中一共定义了两个抽象方法,如下所示:

No.方法类型描述
1public boolean hasNext()普通判断是否还有内容
2public E next()普通取出当前内容

当使用Iterator接口输出内容时,往往都先利用hasNext()改变指针位置,同时判断是否有数据,如果当前指针所在位置存在数据,则利用next()取出数据。 在这里插入图片描述
事实上之前我们讲的Scanner类就是Iterator接口的子类,所以在Scanner使用时才要求先利用hasNextXxx()判断是否有数据,在利用nextXxx()取得数据。

例:使用Iterator输出集合

package Project.Study.IteratorClass;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Test1 {public static void main(String[]args){List<String>all = new ArrayList<>();    //实例化List集合all.add("Hello");                       //保存数据all.add("Hello");                       //保存重复数据all.add("World");all.add("!!!");Iterator<String> iter = all.iterator(); //实例化Iterator接口while(iter.hasNext()){                  //判断当前是否还有数据String str = iter.next();           //取出当前数据System.out.println(str);            //输出数据}}
}
//结果:
//Hello
//Hello
//World
//!!!

双向迭代:ListIterator

Iterator接口虽然可以实现集合的迭代输出操作,但他本身存在一个问题:只能进行由前向后的输出。所以为了让输出更灵活,在类集框架中提供了一个ListIterator接口,利用该接口可以实现双向迭代,他属于Iterator的子接口,常用方法如下:

No.方法类型描述
1public boolean hasPrevious()普通判断是否有前一个元素
2public E previous()普通取出前一个元素
3public void add(E e)普通向集合追加数据
4public void set(E e)普通修改集合数据

ListIterator是专门为List子接口定义的输出接口,所以ListIterator接口对象的实例化可以依靠List接口提供的方法:
public ListIterator< E > listIterator()。
例:完成双向迭代

package Project.Study.ListIteratorClass;import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;public class Test1 {public static void main(String[]args){List<String>all = new ArrayList<>();            //实例化List接口对象      all.add("Hello");                               //向集合里面保存数据all.add("World");all.add("Hello");all.add("!!!");System.out.println("由前向后输出:");ListIterator<String>iter = all.listIterator();  //实例化ListIterator接口while(iter.hasNext()){                          //由前向后迭代String str = iter.next();                   //取出当前数据System.out.println(str+"、");               //输出数据}System.out.println("由后向前输出:");while(iter.hasPrevious()){                      //由后向前迭代String str = iter.previous();System.out.println(str+"、");}}
}
//结果:
//由前向后输出:
//Hello、World、Hello、!!!、
//由后向前输出:
//!!!、Hello、World、Hello、

注意:ListIterator接口需要注意迭代顺序,如果要进行由后向前迭代,必须先进行由前向后迭代。

foreach输出

foreach输出之前我们简单地讲过一遍他的使用方法。

例:利用foreach输出集合数据

package Project.Study.ListIteratorClass;import java.util.ArrayList;
import java.util.List;public class Test2 {public static void main(String[]args){List<String>all = new ArrayList<>();            //实例化List接口对象all.add("Hello");                               //向集合里面保存数据all.add("World");all.add("Hello");all.add("!!!");//集合中包含的数据都是String型,所以需要使用String接收集合中的每一个数据for (String str:all) {System.out.println(str);}}
}
//结果:
//Hello
//World
//Hello
//!!!

Enumeration输出

Enumeration(枚举输出)的定义如下:

public interface Enumeration<E>{public boolean hasMoreElements();		//判断是否有下一个元素,等同于hasNext()public E nextElement();					//取出当前元素,等同于next()
}

例:利用Enumeration接口输出对象

package Project.Study.ListIteratorClass;import java.util.Enumeration;
import java.util.Vector;public class Test3 {public static void main(String[]args){Vector<String>all = new Vector<>();             //实例化Vector子类对象all.add("Hello");                               //向集合里面保存数据all.add("World");all.add("Hello");all.add("!!!");Enumeration<String> enu = all.elements();       //取得Enumeration接口对象while(enu.hasMoreElements()){                   //判断是否有数据String str = enu.nextElement();             //取出当前数据System.out.println(str);                    //输出数据}}
}
//结果:
//Hello
//World
//Hello
//!!!

相关文章:

12.27评论5位同学试验三

23号李名贵&#xff0c;http://www.cnblogs.com/xieqiuyou/p/5017244.html#3323660 写的不错&#xff0c;每行语句都有注释&#xff0c;但截图不完整 24号施振成&#xff0c;http://www.cnblogs.com/nonecanstop/p/5079334.html 写的较完整&#xff0c;轮转法和优先算法都有用到…

2022-2028年中国袋式除尘用滤料行业市场全景评估及发展策略分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国袋式除尘用滤料行业市场行业相关概述、中国袋式除尘用滤料行业市场行业运行环境、分析了中…

TL-WDN3321 Ubuntu 下安装

为什么80%的码农都做不了架构师&#xff1f;>>> The WiFi USB dongles based on the newest RT5572 chip set do not work out of the box on Ubuntu. Unex DNUR-V72, D-Link DWA-160 Rev B and TP-Link TL-WDN3200 dongles are based on this chipset. You will …

解决真机编译出现System.DllNotFoundException: 'libmono-native.so'错误都方法

1、去掉勾选&#xff1a;使用共享运行时 2 检查android SDK是否安装了NDK 3、使用真机运行编译APK 转载于:https://www.cnblogs.com/CelonY/p/11355417.html

Revit: Twinmotion工作流程学习

Revit: Twinmotion Workflow MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 技能等级:中级|语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:1h 22m |大小解压后:2.93 GB 含课程文件 Twinmotion是…

Java学习总结:55(偶对象保存:Map接口)

偶对象保存&#xff1a;Map接口 我们前面讲到的Collection属于单值保存父接口&#xff0c;每次只能保存一个对象&#xff1b;而我们这节讲的Map属于偶对象保存接口&#xff0c;利用Map可以保存一对关联数据(按照"key value"的形式)。 Map接口的常用方法 No方法名…

WPF的图片操作效果(一):RenderTransform

一.RenderTransform类的成员&#xff1a; 1.TranslateTransform 平移效果 2.RotateTransform 旋转效果 3.ScaleTransform 缩放效果 4.SkewTransform 扭转效果 5.TransformGroup 组合效果 6.MatrixTransform 是其他几个变形类的基类…

2022-2028年中国大气污染防治产业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国大气污染防治行业市场行业相关概述、中国大气污染防治行业市场行业运行环境、分析了中国大…

最近做手机端,GPS,微信QQ分享总结的问题

Android端 百度地图&#xff1a; 1.libs包中armeabi下liblocSDK4d.so文件丢失&#xff0c;导致百度定位失效。 微信分享&#xff1a; 1.分享App,app的内容&#xff08;图片加描述&#xff09;不能超过32kb &#xff0c;不然无法分享。&#xff08;直接跳至Oncancel事件中&#…

cap理论与分布式事务的解决方案

现在很火的微服务架构所设计的系统是分布式系统。分布式系统有一个著名的CAP理论&#xff0c;即一个分布式系统要同时满足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availablility&#xff09;和分区容错&#xff08;Partition Tolerance&#xff09;三个…

Blender中的多平面动画学习教程

技能分享–Blender中的多平面动画 Skillshare – Multiplane Animation in Blender 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 大小解压后&#xff1a;1.34G 含课程素材 信息: 我们将在这堂课中致力于创建一个2D多平面相机效果&#xf…

BestCoder Round #68 (div.2) 1002 tree

题意&#xff1a;给你一个图&#xff0c;每条边权值0或1&#xff0c;问每个点周围最近的点有多少个&#xff1f; 思路&#xff1a;并查集找权值为0的点构成的连通块。 1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 #include<math.h>…

Java学习总结:56(Stack子类)

Stack子类 Stack表示栈操作&#xff0c;栈也是一种动态对象数组&#xff0c;采用的是一种先进后出的数据结构形式&#xff0c;即在栈中最早保存的数据最后才会取出&#xff0c;而最后保存的数据可以最先取出。Stack类的定义如下&#xff1a; public class Stack<E>exte…

2022-2028年中国大理石料行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国大理石料行业市场行业相关概述、中国大理石料行业市场行业运行环境、分析了中国大理石料行…

ActionScript 3操作XML 详解

AS3引入了E4X &#xff0c;它是根据ECMAScript标准处理XML 数据的全新机制。这使得程序员在程序中无缝地操作XML。在AS3中可以使用XML字面值将XML数据直接写入代码&#xff0c;该字面值将被自动解析。 一、AS3中的XML入门 1.可以将XML直接写入代码 public var employeelist:XML…

kubernetes关键特性和概述

kubernetes关键特性和概述 https://blog.csdn.net/u014042372/article/details/80573213 posted on 2019-08-16 11:23 竹径风声 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/girl1314/p/11362768.html

Blender创作你自己的动画短片学习教程

Filmmaking with Blender – Create your own animated Short Film 时长:1h 20m |视频:. MP4 1280720&#xff0c;30 fps(r) |音频:AAC&#xff0c;44100 Hz&#xff0c;2ch |大小:1G 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 在本课…

Java学习总结:57(Properties子类)

Properties子类 Properties类本身是Hashtable的子类&#xff0c;但是由于Properties类都使用String数据类型进行操作&#xff0c;所以在使用Properties类时主要使用本类所定义的方法。Properties类常用方法如下&#xff1a; No.方法类型描述1public Object setProperty(Strin…

openwrt入门

一、安装Ubuntu(在vware安装) 注意使用图形系统 二、安装openwrt开发工具 1.打开命令窗CtrlAltT&#xff0c;切换到root用户&#xff1a;sudo -sH或sudo su&#xff0c;退出root用户&#xff1a;CtrlD或exit 2.切换到root&#xff0c;下载安装组件&#xff08;apt-get install …

2022-2028年中国大飞机项目产业链分析及投资咨询报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国大飞机项目行业市场行业相关概述、中国大飞机项目行业市场行业运行环境、分析了中国大飞机…

一种可以避免数据迁移的分库分表scale-out扩容方式

原文地址&#xff1a;http://jm-blog.aliapp.com/?p590目前绝大多数应用采取的两种分库分表规则mod方式dayofweek系列日期方式&#xff08;所有星期1的数据在一个库/表,或所有?月份的数据在一个库表&#xff09;这两种方式有个本质的特点&#xff0c;就是离散性加周期性。例如…

openstack对比其他有什么优点

openstack对比其他有什么优点 &#xff08;1&#xff09;模块松耦合。与其他开源软件相比&#xff0c;OpenStack模块分明。添加独立功能的组件非常简单。有时候&#xff0c;不需要通读整个OpenStack的代码&#xff0c;只需要了解其接口规范及API使用&#xff0c;就可以轻松地添…

C#和Unity编码和游戏开发学习教程

MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:110节课(26小时25分钟)|大小解压后:18.6 GB 含课程文件 学习C#和Unity编码和游戏开发 The Ultimat…

Linux命令行与命令

Linux命令行与命令 作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; Linux的命令是很重要的工具&#xff0c;也往往是初学者最大的瓶颈。有朋友用了很长时间的Linux图形界面&#xff0c;基本不使…

Java学习总结:58(Collections工具类)

Collections工具类 Java提供了一个集合的工具类——Collections&#xff0c;这个工具类可以实现List、Set、Map集合的操作。Collections类的常用方法如下&#xff1a; No.方法类型描述1public static < T > boolean addAll(Collection<? super T> c,T…elements…

2022-2028年中国醋酸行业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国醋酸行业市场行业相关概述、中国醋酸行业市场行业运行环境、分析了中国醋酸行业市场行业的…

[转] linux系统文件流、文件描述符与进程间关系详解

http://blog.sina.com.cn/s/blog_67b74aea01018ycx.html linux&#xff08;unix&#xff09;进程与文件的关系错综复杂&#xff0c;本教程试图详细的阐述这个问题。包括&#xff1a;1、linux多/单进程与多/单文件对于文件流和描述符在使用时的关联情况及一些需要注意的问题。2、…

VMware虚拟机 取消 简易安装

我的VMware更新到12.0版本了&#xff0c;突然有了个简易安装操作系统&#xff0c;不得不承认这个功能很省事&#xff0c;如果没有特殊要求&#xff0c;这样安装虚拟机既快速有稳定。 但是专业人士总是要专门的服务&#xff0c;追求自动化&#xff0c;往往忽略一些细节上的东西。…

UE5蓝图初学课程 Unreal Engine 5: Blueprints for Beginners

时长:6h 51m |视频:. MP4 1280720&#xff0c;30 fps(r) |音频:AAC&#xff0c;44100 Hz&#xff0c;2ch |大小解压后:4.4 GB 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 没有编码的游戏开发 开发一个高质量的游戏&#xff0c;不需要写…

SQL基础学习总结:1(数据库)

数据库 我们通常将可以将大量数据保存下来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合称为数据库&#xff0c;简称&#xff1a;DB。 而用来管理数据库的计算机系统则称之为数据库管理系统&#xff0c;简称&#xff1a;DBMS。一般情况下&#xff0c;系统的使用…