迭代中Iterable和Iterator分为两个接口的好处

2023-12-07 15:32

本文主要是介绍迭代中Iterable和Iterator分为两个接口的好处,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    主要是分工作业。Iterable告知这个集合可以直接进行遍历;Iterator则是执行具体的遍历操作。而且一个实现Iterable接口的集合可以进行多次的遍历,当每次执行遍历操作的时候把自己本身传给实现Iterator的对象,这样每次遍历的操作都不会影响这个集合的内部元素。

 

package com.zz.iterator;public class LinkedList<E> implements Collection<E> , Iterable<E>{private int size = 0;private Node<E> head;private Node<E> tail;public Node<E> getHead() {return head;}public void setHead(Node<E> head) {this.head = head;}public Node<E> getTail() {return tail;}public void setTail(Node<E> tail) {this.tail = tail;}	public void add(E e) {Node<E> n = new Node<E>(e,null);if (head == null) {head = n;tail = n;} else {tail.setNext(n);tail = n;}		size ++;}public E get(int ix) throws IndexOutOfBoundsException{if (size <= 0 || size <= ix) {throw new IndexOutOfBoundsException("数组越界了:"+ix);}Node<E> e = head;for (int i=0;i<ix;i++) {e = e.getNext();}return e.getCurrentE();}public int size() {return size;}@Overridepublic Iterator<E> iterator() {return new LinkedListIterator<E>(this);}@SuppressWarnings("hiding")public class LinkedListIterator<E> implements Iterator<E> {private int index = 0;private LinkedList<E> linkedList;public LinkedListIterator(LinkedList<E> linkedList) {this.linkedList = linkedList;}		@Overridepublic boolean hasNext() {return size > index;}@Overridepublic E next() {Node<E> node = linkedList.getHead();for (int i=0;i<index;i++) {node = node.getNext();}index ++;return node.getCurrentE();}}
}


 

这篇关于迭代中Iterable和Iterator分为两个接口的好处的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466391

相关文章

Serializable的好处

任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。 import java.io.Serializable;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v

多线程篇(阻塞队列- LinkedBlockingDeque)(持续更新迭代)

目录 一、LinkedBlockingDeque是什么 二、核心属性详解 三、核心方法详解 addFirst(E e) offerFirst(E e) putFirst(E e) removeFirst() pollFirst() takeFirst() 其他 四、总结 一、LinkedBlockingDeque是什么 首先queue是一种数据结构,一个集合中

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。