-
2021-04-23 16:55:40
Java中的Iterator功能比较简单,并且只能单向移动:
1. 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
2. 使用next()获得序列中的下一个元素 。
3. 使用hasNext()检查序列中是否还有元素 。
4. 使用remove()将迭代器新返回的元素删除。
JDK1.6之后:
ArrayList list = new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
Iterator iter = list.iterator();
while(iter.hasNext()){
String str= iter.next();
System.out.println(str);
}
使用 iterator()方法可以获取到对应的Iterator 集合
更多相关内容 -
Java:如何从String获取Iterator
2021-02-26 21:04:13一种选择是使用Guava:ImmutableList chars = Lists.charactersOf(someString);UnmodifiableListIterator iter = ...但是,如果您最终自己完成此操作,我建议不要像其他一些示例那样公开Iterator的实现类.我建议改为创...一种选择是使用Guava:
ImmutableList chars = Lists.charactersOf(someString);
UnmodifiableListIterator iter = chars.listIterator();
这将生成一个由给定字符串支持的不可变字符列表(不涉及复制).
但是,如果您最终自己完成此操作,我建议不要像其他一些示例那样公开Iterator的实现类.我建议改为创建自己的实用程序类并公开静态工厂方法:
public static Iterator stringIterator(final String string) {
// Ensure the error is found as soon as possible.
if (string == null)
throw new NullPointerException();
return new Iterator() {
private int index = 0;
public boolean hasNext() {
return index < string.length();
}
public Character next() {
/*
* Throw NoSuchElementException as defined by the Iterator contract,
* not IndexOutOfBoundsException.
*/
if (!hasNext())
throw new NoSuchElementException();
return string.charAt(index++);
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
-
【java迭代器Iterator】获取单个元素,循环遍历和删除
2022-07-11 13:32:49Iterator 是 Java 迭代器,获取迭代器,遍历集合,删除,获取单个元素java迭代器Iterator
什么是Iterator
public interface Iterator 由此可见它是一个接口
Iterator 是 Java 迭代器最简单的实现,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。怎么获取Iterator对象
Iterator是一个接口,没有构造方法,那我们如何创建它的对象呢?
我们可以通过它的实现类来创建对象
public interface Collection extends Iterable Collection是一个接口它继承了Iterable接口,所以它会重写Iterable里面的方法,而Collection也是一个接口,我们要创建它的对象,应该去找它的实现类,比如ArrayList//获取集合对象 Collection c = new ArrayList(); //添加元素 c.add("123"); c.add(123); c.add('c'); System.out.println(c); //iterator iterator()获取迭代器 Iterator it = c.iterator();
Iterator三个常用方法
E next() 获取单个元素
返回迭代中的下一个元素。
boolean hasNext() 可用于循环遍历
如果next()返回一个元素而不是抛出一个异常,则返回true
换言之,调用hasNext() 用于检测集合中是否还有元素。
default void remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 此方法只能调用一次next() 。 如果底层集合在迭代过程中以任何方式进行修改而不是通过调用此方法,则迭代器的行为是未指定的。
换言之,调用 remove() 将迭代器返回的元素删除。
-
如何获取vector的一个迭代器iterator的地址
2018-11-27 23:56:23在使用vector时,使用*iterator可以读出迭代器指向vector中的值,那如果想读出iterator的地址,该怎么表示呢? 思考 对于常规的指针而言,可以用int *ptr来表示一个指向整型变量的指针,*ptr即指向整型变量的值,ptr...在使用vector时,使用*iterator可以读出迭代器指向vector中的值,那如果想读出iterator的地址,该怎么表示呢?
思考
对于常规的指针而言,可以用int *ptr来表示一个指向整型变量的指针,*ptr即指向整型变量的值,ptr即地址
代码如下#include <iostream> using namespace std; int main(){ int i = 123; int *ptr; ptr = &i; cout << "i: " << i << ", address of i: " << &i << endl; cout << "*ptr: " << *ptr << ", ptr: " << ptr << endl; return 0; }
打印的结果和预期是一样的
尝试去获取iterator的地址
Demo
#include <iostream> #include <vector> using namespace std; int main(){ vector<int> vecInt; for(int i = 10; i != 15; i++){ vecInt.push_back(i); } //show all elements cout << "show all elements: " << endl; for(int i : vecInt){ cout << i << " "; } //address of iter and end vector<int>::iterator iter = vecInt.begin(); while(iter != vecInt.end()){ /* want to get the address of iterator cout << "address of iter: " << ??? << ", address of end: " << ??? << endl; */ iter++; } return 0; }
在代码中,遍历这个vector,并打印出每个iterator的地址,如果使用和指针类似的写法,如下代码:
vector<int>::iterator iter = vecInt.begin(); while(iter != vecInt.end()){ iter = vecInt.erase(iter); cout << "addr of iter: " << iter << ", addr of end: " << vecInt.end() << endl; }
编译器会报错:[Error] cannot bind ‘std::basic_ostream’ lvalue to ‘std::basic_ostream&&’
那么应该如何获取呢?
获取iterator的地址
一般来说,迭代器是个数据结构,会将真实的数据地址保存在某个内部的成员变量中,并重载各种运算符(比如解引用运算符*)。
要取得数据地址,使用 &* 或者 std::addressof(*iterator)
#include <iostream> #include <vector> using namespace std; int main(){ vector<int> vecInt; for(int i = 10; i != 15; i++){ vecInt.push_back(i); } //address of iter and end vector<int>::iterator iter = vecInt.begin(); while(iter != vecInt.end()){ cout << "addr of iter: " << &*iter << ", addr of end: " << &*vecInt.end() << endl; iter++; } return 0; }
通过使用 &*iter来获取迭代器的地址
-
【JAVA】-- 集合(二)(Iterator)
2022-04-25 20:53:201、获取Iterator对象 例:Iterator it = list.iterator(); 2、使用hasNext()判断集合是否存在下一元素 例:while (it.hasNext()) { } 3、如果存在,调用next()将元素取出 例:Object obj = it.next(); 示例:... -
java iterator方法
2021-02-12 21:34:04展开全部iterator方法是JDK提供的迭代32313133353236313431303231363533e4b893e5b19e31333337393536接口进行Java集合的迭代。Iterator iterator = list.iterator();while(iterator.hasNext()){String string = ... -
Java集合之Iterator迭代器
2022-04-03 09:36:27Java集合,迭代器 、Iterator -
Iterator 迭代获取map的数据
2015-12-11 17:06:00//遍历MAP方法,效率较低 Iterator it = map.keySet().iterator(); while(it.hasNext()){ String key = (String) it.next(); String value = map.get(key); System.out.println(key + "→" + value); } ... -
java - 获取迭代器的计数/长度/大小的最佳方法是什么?
2021-03-01 09:35:24java - 获取迭代器的计数/长度/大小的最佳方法是什么?是否有一种“计算”快速的方法来获取迭代器的计数?int i = 0;for ( ; some_iterator.hasNext() ; ++i ) some_iterator.next();......似乎浪费了CPU周期。Zak ... -
Java学习之Iterator(迭代器)的一般用法 (转)
2021-03-09 02:02:02迭代器(Iterator)迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单... -
Java Iterator接口实现代码解析
2020-08-19 06:10:19主要介绍了Java Iterator接口实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
ArrayList中的Iterator详解
2019-07-31 23:44:24每个实现Iterable接口的类必须提供一个iterator方法,返回一个Iterator对象,ArrayList也不例外 public Iterator<E> iterator() { return new Itr(); } 返回的是一个Itr类的对象,接下来我们来看它的部分... -
获取迭代器中的长度
2021-10-09 16:01:52导入 import com.google.common.collect.Iterators; public static void main(String[] args) { ArrayList<Integer> integers = new ArrayList<>(); for (int i = 0; i <... Iterator -
Android数据解析获取JSONObject的key值-Iterator应用
2015-10-14 21:55:18// 应用迭代器Iterator 获取所有的key值 while (iterator.hasNext()) { // 遍历每个key String key = (String) iterator.next(); //切记用optJSONObject();用get JSONObject()在为null的时候会报错哦... -
使用Iterator时如何获取当前循环索引?
2021-03-08 14:12:44for (Iterator it = list.iterator(); it.hasNext(); i++) { String s = it.next(); System.out.println(i + ": " + s); } 输出(你猜对了): 0: zero 1: one 2: two 优点是你不要在循环中增加索引(尽管你需要注意每... -
iterator:Golang Iterator用于有序地图
2021-05-26 16:37:24$去获取github.com/mantyr/iterator 例子 package main import ( "github.com/mantyr/iterator" "fmt" "strconv" ) type Obj struct { param1 int param2 string } func main () { items := iterator . New ... -
Iterator迭代器的简单介绍与使用
2020-12-21 22:40:421 Iterator接口 集合遍历接口java.util.Iterator,Iterator接口也是Java集合中的一员,但...public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。 下面介绍一下迭代的概念: 迭代:即Collectio -
C++迭代器介绍(iterator、const_iterator、reverse_interator、const_reverse_interator)
2020-08-25 00:37:30主要介绍了C++迭代器介绍(iterator、const_iterator、reverse_interator、const_reverse_interator),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... -
Java集合框架迭代器Iterator实现原理解析
2020-08-18 16:55:42主要介绍了Java集合框架迭代器Iterator实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Scala语法(iterator迭代器)
2021-01-08 11:55:21使用iterator方法可以从集合获取一个迭代器 迭代器的两个基本操作 hasNext——查询容器中是否有下一个元素 next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementException 每一个迭代器都是有状态的 迭代完... -
C++迭代器 iterator (一)
2015-11-14 16:12:26迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。 每种容器类型都定义了自己的迭代器类型,如vector: vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的... -
求STL容器的两个iterator的距离
2017-10-09 14:11:00什么是Iterator? iterator的概念源自于对遍历一个线性容器工具的抽象,即如何你能访问这个容器的某个元素。对于最简单的数组,当然可以用数组的索引值,因为数组是连续存放在内存中的;但对于链表,就必须用指针。... -
迭代器 Iterator()遍历类中的元素,其中方法主要用 hasnext()判断是否有下一个元素
2018-11-07 15:47:28提示:迭代器 Iterator()遍历类中的元素,其中方法主要用 hasnext()判断是否有下一个元素, next()元素获得元素 package lanqiaobei; import java.util.*; public class ss { public static void main(String ... -
Java使用Iterator迭代器遍历集合数据的方法小结
2020-08-25 09:25:30主要介绍了Java使用Iterator迭代器遍历集合数据的方法,结合实例形式分析了java迭代器进行集合数据遍历的常见操作技巧,需要的朋友可以参考下 -
Java Collection集合iterator方法解析
2020-08-25 03:57:04主要介绍了Java Collection集合iterator方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Java集合Iterator迭代的实现方法
2020-09-01 18:48:34主要介绍了Java集合Iterator迭代接口的实现方法,非常不错,具有参考借鉴家,对Java 结合iterator知识感兴趣的朋友一起看看吧 -
Iterator中hasNext(), next()的值的获取
2021-05-07 10:07:14自己犯的错误记录下,直接上代码 List<String> accis=new ArrayList(); ... iterator = recos.iterator(); int i=0; while(iterator.hasNext()){ System.out.println("循环次数:"+(i++)); -
Java Iterator接口遍历单列集合迭代器原理详解
2020-08-25 06:43:02主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
一文读懂Java Iterator(迭代器)
2020-08-18 21:39:39主要介绍了Java Iterator(迭代器)的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 -
Java--迭代器(Iterator)迭代原理
2021-10-23 15:53:55Java中迭代器(Iterator)是一个接口,通过构造方法iterator()可以获取迭代器 public interface Iterable<T> { /** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. ...