java集合---迭代器iterator
一:ArraryList 最终继承超级接口Collection,Colection接口继承Iterator接口。
public interface Collection<E>
extends Iterable<E>
而Iterator只有一个方法:
Iterator<T> iterator()
在ArraryList实现类中有对方法的重写,返回当前实现类的迭代器对象(Returns an iterator over a set of elements of type T.)。
package test08; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class iter_demo {
public static void main(String...args){
iter_test(); }
public static void iter_test(){
Collection<Integer> in_ar=new ArrayList<Integer>();
in_ar.add();
in_ar.add();
in_ar.add();
in_ar.add();
Iterator<Integer> in_it=in_ar.iterator();
while (in_it.hasNext()){
System.out.print(in_it.next());
}
}
}
其中:hasNnext()判断迭代器中是否还有下一个数组元素。
next()表示获取下个数组元素。
迭代器实现原理类似内存指针,hasNext每次判断下个元素是否为空,即指针指向下个元素,有就返回true否则返回false。
二、增强for
语法: for(type 变量:可迭代的对象){
代码块
}
增强for虽然能减少代码的量,但是弊端也明显,无法操作索引。
上面例子不采用迭代器:
package test08; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class iter_demo {
public static void main(String...args){
iter_test(); }
public static void iter_test(){
Collection<Integer> in_ar=new ArrayList<Integer>();
in_ar.add();
in_ar.add();
in_ar.add();
in_ar.add();
for(Integer i:in_ar){
System.out.print(i);
}
}
}
如果想要操作索引,还得使用传统的for。
package test08; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class iter_demo {
public static void main(String...args){
iter_test(); }
public static void iter_test(){
Collection<Integer> in_ar=new ArrayList<Integer>();
in_ar.add();
in_ar.add();
in_ar.add();
in_ar.add();
for(Integer i=;i<in_ar.size();i++){
ArrayList<Integer> in_ar_new=(ArrayList<Integer>) in_ar;
System.out.print(in_ar_new.get(i));
}
}
}
java集合---迭代器iterator的更多相关文章
- Java集合迭代器 Iterator分析
简介 迭代器是遍历容器的一种常用方法,它屏蔽了容器的实现细节,无需暴露数据结构内部,就可以对容器进行遍历,迭代器本身也是一种设计模式,迭代是一种特殊的遍历方式. Iterator 在java中,迭代器 ...
- Java 实现迭代器(Iterator)模式
类图 /** * 自己定义集合接口, 相似java.util.Collection * 用于数据存储 * @author stone * */ public interface ICollection ...
- java集合迭代器
一.Java中有一个设计模式是迭代器模式 1.迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.迭代器模式概述Java集合框 ...
- 集合迭代器Iterator
迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 什么是迭代器Iterator? Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比 ...
- Java集合(二)--Iterator和Iterable
Iterable: public interface Iterable<T> { Iterator<T> iterator(); } 上面是Iterable源码,只有一个ite ...
- Java集合、Iterator迭代器和增强for循环整理
集合 集合,集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.1 ArrayList集合存储元素 pac ...
- Java 集合、Iterator迭代器、泛型等
01集合使用的回顾 A:集合使用的回顾 a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList<I ...
- Java中迭代器Iterator的使用
Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍 ...
- java:集合输出Iterator,ListIterator,foreach,Enumeration
//集合输出,集合的四种输出 Iterator, ListIterator, foreach, Enumeration 只要碰到集合,第一输出选择是Iterator类. Iterator<E&g ...
随机推荐
- CCScrollView的滑动体验
最近在研究cocos2dx,由于项目中要用到内容滚动效果(内容超出容器,可以通过滑动屏幕滚动来查看),所以就毫不犹豫的选择了CCScrollView组件. 使用中发现CCScrollView的体验 ...
- java集合(List集合与Map集合的数据转换)
List集合与Map集合的数据转换 实现List和Map数据的转换. 具体要求如下: 功能1:定义方法public void listToMap( ){ }将List中Student元素封装到Map中 ...
- 漂亮的ActionBar效果
Newsstand—这个应用引进了新的方式,使得ActionBar达到了新的水平.如果你打开这个应用的发布页,你会注意到不带图标的ActionBar是半透明的,而且和一个大的图片集(一个大的杂志图标, ...
- Android 如何监听一个线程的开始和结束
方法一:轮训 比如主线程要等子线程在得到变量“val”值的时候开始用“val”的值来进行工作,使用轮训的方法如下: public class SubThread extends Thread{ pri ...
- openwrt-rpcd服务ACL配置错误风险分析
前言 openwrt 是一个用于的 路由器 的开源系统. 其他类似的路由器系统相比它的更新速度非常的快,可以看看 github 的更新速度 https://github.com/openwrt/ope ...
- 带你从零学ReactNative开发跨平台App开发(十)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- tomcat报错相关问题
action1:tomcat7w.exe里面path to executable不是当前所用的tomcat(可执行文件路径是你以前使用过的tomcat路径,导致启动服务报错:找不到可执行文件) 解决办 ...
- Ubuntu 16.04下 - vi编辑器使用【backspace】无法删除
参考:https://blog.csdn.net/leiwangzhongde/article/details/83339589
- leetCode题解之Reshape the Matrix
1.题目描述 2.分析 使用了一个队列. 3.代码 vector<vector<int>> matrixReshape(vector<vector<int>& ...
- Vue2学习笔记:v-show指令
v-show指令:v-show="true/false" 控制元素显示/隐藏 1.使用 <!DOCTYPE html> <html> <head> ...