用迭代器iterator遍历list中第一条数据和最后一条数据 并判断

作者&投稿:禽哲 (若有异议请与网页底部的电邮联系)
书上讲,list 和 set 集合中,如果在迭代器Iterator中遍历元素的过程中,对集合元素进行增删,就会报错。~

要看add或remove的位置

~~~~~~~





不是。
这句话的意思是 当(下一个迭代器返回真时) 则……
和获取容器里的元素毫无关系。
next()的实现是这样:先看看当前迭代器指向位置的下一个位置还存不存在,不存在就返回假,存在就返回真。

应当说这个list的设计很不好,因为方法应当是施加于容器上的,迭代器仅用来指示位置,而不是迭代器上还能用方法。正确的list设计应该是这样的
Iterator it = list.begin(); for(;it!=list.end();++it) { System.out.println(*it); }

Iterator iterator = list.iterator();

Object first = null;

Object last = null;

int count = 0;

while(iterator.hasNext()) {

count++;

Object temp = iterator.next();

if(count==1) {

first = temp;

}

else {

if(!iterator.hasNext()) {//最后一个元素

last = temp;

}

}

}

之后对first、last处理,之后的代码用户可根据自己的需求进行处理。

扩展资料:

迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。

Iterable:实现这个接口的集合对象支持迭代,是可以迭代的。实现了这个可以配合foreach使用

Iterator:迭代器,提供迭代机制的对象,具体如何迭代是这个Iterator接口规范的。

Iterator接口包含三个方法:hasNext,next,remove。

参考资料来源:百度百科-迭代器



Iterator iterator = list.iterator();
Object first = null;
Object last = null;
int count = 0;
while(iterator.hasNext()) {
count++;
Object temp = iterator.next();
if(count==1) {
first = temp;
}
else {
if(!iterator.hasNext()) {//最后一个元素
last = temp;
}
}
}
之后对first、last处理,但是你没说明要处理什么,所以也不好写

list.get(0);
list.get(list.size()-1);
从来不建议用iterator来读List,除非是为了偷懒foreach,不然别用这个烂玩意。直接当数组用,多方便啊。


c语言中string是啥意思啊?控制啥的啊
string&assign(const_iteratorfirst,const_itertorlast);\/\/把first和last迭代器之间的部分赋给字符串 4、string的连接: string&operator+=(conststring&s);\/\/把字符串s连接到当前字符串的结尾 string&append(constchar*s);\/\/把c类型字符串s连接到当前字符串结尾 string&append(constchar*s,intn);\/\/把c类型字...

Python中的返回值问题!!!
显式获取某个容器的iterator可以调用iter函数:l = [1,2,3,4]i = iter(l)\/\/现在i就是一个list iterator。可以用来遍历l这个list.i.next() # 1 i.next() # 2 \/\/每一个iterator都必须实现next方法。并且在没有元素时抛出StopIteration异常。在for语句和list comprehension中,都是隐式...

C++:怎样在string类中完成两个字符串的连接,复制?
string &assign(const_iterator first,const_itertor last);\/\/把first和last迭代器之间的部分赋给字符串string的连接:string &operator+=(const string &s);\/\/把字符串s连接到当前字符串的结尾 string &append(const char *s); \/\/把c类型字符串s连接到当前字符串结尾string &append(const char *s,int n);...

python 代码中 ret=True 代表什么意思?
it = iter(lst) # __iter__()获得迭代器print(it.__next__()) #1print(next(it)) #2 __next__()print(next(it)) #3print(next(it)) #4字符串类型代码的执行 eval() 执行字符串类型的代码. 并返回最终结果 exec() 执行字符串类型的代码 compile() 将字符串类型的代码编码. 代码对象能够...

c++中迭代器是什么意思?
容器就是数据结构的泛指,迭代器就是指针的泛指,可以指向元素。容器相当于一个储藏柜,里面装的许多不同的物品就像是储存的元素,比如面包、啤酒、苹果、现金。要取得各个物体就得用与各个物体向匹配的工具,如取出面包要用盘子、取出啤酒要用杯子、取出苹果要用篮子、取出现金要用钱包。迭代器的作用就...

c语言中string是啥意思啊? 控制啥的啊
string &assign(const_iterator first,const_itertor last); \/\/把first和last迭代器之间的部分赋给字符串 4、string的连接: string &operator+=(const string &s);\/\/把字符串s连接到当前字符串的结尾 string &append(const char *s); \/\/把c类型字符串s连接到当前字符串结尾 string &append(const char *s...

大化瑶族自治县15760372306: C++中如何遍历输出list中的元素? -
菜和脑血: C++ 利用利用迭代器iterator就可以遍历输出了; using namespace std; int main() { vector<int> ivec; ivec.push_back(1); ivec.push_back(2); ivec.push_back(3); ivec.push_back(4); for(vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter) cout << *iter << endl;

大化瑶族自治县15760372306: 用迭代器iterator遍历list中第一条数据和最后一条数据 并判断
菜和脑血: Iterator iterator = list.iterator();Object first = null;Object last = null;int count = 0;while(iterator.hasNext()) { count++; Object temp = iterator.next(); if(count==1) { first = temp; } else { if(!iterator.hasNext()) {//最后一个元素 last = temp; } }}之后对first、last处理,但是你没说明要处理什么,所以也不好写

大化瑶族自治县15760372306: java迭代器到底怎么使用 -
菜和脑血: 我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(跌代器). 使用跌代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了.但是在使用的时候也是有不同的. List和Set都有...

大化瑶族自治县15760372306: 急急急!!!java eclipse写完代码运行之后无法输入 -
菜和脑血: 你是对了一个list做了 Iterator迭代器对ls集合遍历 Iterator it = ls.iterator(); 然后for循环i=0;i<list.size();循环中用了it.next吧? it.next()是向下寻找看是否有值有则返回true相反false 所以就出现了线程越界,解决方法把for改成: while(it.next){ //这里面就不能用it.next()了 }

大化瑶族自治县15760372306: python生成器和迭代器的区别 -
菜和脑血: 先说迭代器,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数,iter()是python的内置函数.iter()会返回一个定义了next()方法的迭代器对象

大化瑶族自治县15760372306: c++stl vector怎么用迭代器遍历 -
菜和脑血: vector<int> abc = { 1, 2, 3, 4, 5, 6, 7 }; for(vector<int>::iterator i = abc.begin(); i != abc.end(); ++i) {// 用 *i 获取遍历到的值 }

大化瑶族自治县15760372306: for(){}与iterator()遍历循环的区别,各自的特点? -
菜和脑血: 个人觉得这两个 在集合方面迭代时候是有区别的: 比如你要遍历一个集合,当满足某条件时候,删除一个元素, 如果用的是for循环,就用集合自带的remove(),而这样就改变了集合的Size()循环的时候会出错但如果把集合放入迭代器,既iterator 迭代可以遍历并选择集合中的每个对象而不改变集合的结构,而把集合放入迭代器,用迭代器的remove()就不会出现问题.

大化瑶族自治县15760372306: JAVA中Iterator的具体作用? -
菜和脑血: 迭代器模式(Iterator pattern) 一、 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator(); while(it.hasNext()){ //using “it.next();”do some businesss logic } ...

大化瑶族自治县15760372306: 在用迭代器遍历时遇到问题,请教各位 -
菜和脑血: 使用迭代器遍历,最常用的就是两个方法,一个是hasNext();另一个是next();两者经常结合使用.

大化瑶族自治县15760372306: iterator>怎么用 -
菜和脑血: 很简单,Iterator迭代器是用来遍历集合的.你的问题跟迭代器没什么关系,关键是你所遍历的是一个Map集合.Map集合是键值对的存在形式的,因此你需要遍历的是它的KeySet()也就是它的Key集合.这样通过遍历它的键集合就可以拿到值的集合.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网