`
bolan392
  • 浏览: 276814 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义迭代器

 
阅读更多

   自定义迭代器,它用于过滤超过一定长度的字符串的迭代器:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class ShortStringItertor implements Iterator {
	private Iterator strings; //需要迭代的字符串迭代器
	private String nextShort; //如果没有下一个则为null
	private final int maxLen;//需要迭代的长度
	public ShortStringItertor(int maxLen, Iterator strings) {
		this.maxLen = maxLen;
		this.strings = strings;
		this.nextShort = null;
	}
	public boolean hasNext() {
		if(nextShort!=null) return true;
		while(strings.hasNext()){
			nextShort = (String)strings.next();
			if(nextShort.length()<=maxLen) return true;
		}
		nextShort = null;
		return false;
	}
	public Object next() {
		if(nextShort==null&&!hasNext()) throw new NoSuchElementException();
		String n = nextShort;
		nextShort = null;
		return n;
	}
	public void remove() {
	}

}

 

迭代器的使用:

public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("asdfsafasfd");
		list.add("asdsfd");
		list.add("asdfsafad");
		list.add("asdfsfd");
		list.add("afsafasfhgddfghdg");
		list.add("asdfsfd");
		list.add("aafasdgfdfgdfgfd");
		list.add("asfasfd");
		list.add("asfd");
		list.add("asdasfd");
		Iterator<String> it = new ShortStringItertor(10,list.iterator());
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}

 

分享到:
评论

相关推荐

    21 006_2自定义迭代器.mp4

    21 006_2自定义迭代器.mp4

    python迭代器与生成器示例代码之自定义迭代器遍历数字序列

    python 迭代器与生成器

    14.Python中的迭代器协议1

    迭代器协议是Python中的一种机制,它允许开发者自定义迭代器的行为,例如,自定义迭代器的返回值、迭代器的停止条件等。 在Python中,Generator也是迭代器的一种,它可以通过`yield`关键字来实现迭代。Generator...

    Java实现的自定义迭代器功能示例

    总之,自定义迭代器是Java编程中一种重要的技巧,它允许开发者根据需求定制迭代行为,尤其是在处理非标准集合结构时。这个示例提供了一个基础模板,可以根据实际需求进行修改和扩展,以适应各种复杂的数据结构和遍历...

    jsp自定义迭代标签

    ### JSP自定义迭代标签详解 #### 一、引言 在JSP(JavaServer Pages)开发中,自定义标签可以极大地提高代码的复用性和可维护性。特别是在处理循环迭代逻辑时,自定义迭代标签能够使页面逻辑更加清晰、简洁。本文...

    设计模式(C#)之迭代器模式(Iterator Pattern)

    开发者可以通过实现这些接口来创建自定义迭代器。 ```csharp public interface IEnumerable { IEnumerator&lt;T&gt; GetEnumerator(); } public interface IEnumerator { T Current { get; } bool MoveNext(); void ...

    Python高级特性深入解析:装饰器与迭代器的应用

    接着介绍了迭代器的定义及其与可迭代对象的区别,讲解了如何创建自定义迭代器,以及生成器的概念和如何将其转换为迭代器。 适合人群:已经掌握Python基础知识,想要进一步深入了解Python高级特性的开发者。 使用场景...

    STL简单迭代器的实现

    通过自定义迭代器,我们可以更好地控制数据的访问和处理,同时也能为自定义容器提供类似STL的标准接口。不过,实际应用中,除非有特殊需求,通常建议直接使用STL提供的标准迭代器,因为它们已经经过优化并遵循了严格...

    迭代器,生成器

    例如,可以结合使用自定义迭代器和生成器来处理大数据集,以避免一次性加载所有数据到内存中。 #### 六、总结 通过本文的介绍,我们了解了迭代器和生成器在Python中的作用及其基本用法。这两种工具对于处理大量数据...

    深入讲解Python中的迭代器和生成器

    #### 四、自定义迭代器 除了使用内置函数外,我们还可以通过定义自己的类来创建迭代器。这通常涉及实现 `__iter__()` 和 `__next__()` 方法。 示例代码如下: ```python class MyRange: def __init__(self, n): ...

    Android迭代器模式demo

    // 自定义迭代器类 private static class MyIterator&lt;T&gt; implements Iterator&lt;T&gt; { private List&lt;T&gt; elements; private int currentIndex; public MyIterator(List&lt;T&gt; elements) { this.elements = elements;...

    迭代器源码

    要创建自定义迭代器,我们可以使用`yield return`关键字。当遇到`yield return`语句时,编译器会生成一个状态机,用于保存当前迭代的位置和状态。每次调用`MoveNext()`时,状态机都会恢复到上次迭代的位置并继续执行...

    自定义RDD-从HDFS读取数据代码.zip

    首先,`MyIterator.scala`很可能包含了自定义迭代器的实现,这是从HDFS读取数据的基础。迭代器在Spark中用于逐个处理数据,而自定义迭代器允许我们控制数据的加载方式,比如分批读取或定制化缓存策略。在HDFS中,...

    C#学习笔记整理-迭代器模式介绍

    不过,上述内容展示了一个自定义迭代器模式的实现,通过抽象类`Iterator`和两个具体的迭代器类`ConcreteIterator`和`ConcreteIteratorDesc`来演示。 1. **迭代器模式的角色** - **Iterator(迭代器抽象类)**:这...

    Android设计模式之--迭代器模式

    2. **如何创建自定义迭代器**:根据需求,你可以为自己的聚合类实现一个迭代器,使其支持按特定顺序或条件遍历。 3. **迭代器模式与Android框架的结合**:在Android框架中,诸如Adapter(如ListView的Adapter)也...

    迭代器方法優先權控制.rar_迭代器方法優先權控制

    在Java中,我们可以实现自定义迭代器类,扩展`Iterator`接口并覆盖其方法来实现我们的优先级控制。例如,我们可能需要一个优先处理最新数据的迭代器,那么在`next()`方法中,我们将选择具有最大时间戳的元素返回。...

    学学Python_47类的成员06 实现迭代器

    本篇将重点讲解如何在Python中实现一个自定义迭代器,以及相关类的成员操作。 首先,要实现一个迭代器,我们需要遵循Python的迭代协议,即定义两个特殊方法:`__iter__()`和`__next__()`。`__iter__()`方法返回迭代...

    Python 迭代器 iteraor

    另一个文件“iterator.consol.py”很可能包含了一些示例代码,展示了如何在Python交互式环境中使用迭代器,包括创建自定义迭代器类、使用内置的迭代器函数(如`enumerate()`、`zip()`等)以及处理异常。 总的来说,...

    迭代器模式简介和java代码实现

    1. **自定义迭代器的成本**:对于复杂的数据结构或算法,可能需要编写自定义的迭代器,这会增加开发的复杂性和成本。 2. **额外的内存消耗**:在某些情况下,为了支持迭代,可能需要额外的内存来保存当前遍历的状态...

    joomla迭代器的用法

    在实际开发中,可能需要自定义迭代器类来实现目录树的遍历。然而,代码不能正常执行,这可能是因为特定的PHP版本或环境问题导致的。 迭代器在Joomla开发中的优势: - **灵活性**:迭代器允许我们以不同的方式遍历...

Global site tag (gtag.js) - Google Analytics