一Iterator股票交易接口 国泰,接口基础1Iterator股票交易接口 国泰,接口概述Iterator股票交易接口 国泰,接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历Collection集合中的元素,Iterator对象也被称为迭代器。2Iterator股票交易接口 国泰,接口定义的4个方法booleanhasNext():如果被迭代的集合,元素还有没被遍历完,则返回true。Objectnext():返回集合里下一个元素。voidremove():删除集合里上一次next方法返回的元素。voidforEachRemaining(Consumeractio,这是Java8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。
二正确代码演示1代码示例
import java.util.*;
public class IteratorTest
{
public static void main(String[] args)
{
Collection books = new HashSet();
books.add('现代操作系统');
books.add('Java典型应用');
books.add('TCP/IP协议');
// 获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext())
{
// it.next()方法返回的数据类型是Object类型,因此需要强制类型转换
String book = (String)it.next();
System.out.println(book);
if (book.equals('Java典型应用'))
{
// 从集合中删除上一次next方法返回的元素
it.remove();
}
// 对book变量赋值,不会改变集合元素本身
book = '测试字符串'; //①
}
System.out.println(books);
}
}
运行结果
Java典型应用现代操作系统TCP/IP协议[现代操作系统,TCP/IP协议]
代码说明上面程序中行代码对迭代变量book进行赋值,但再次输出books集合时,会看到集合里的元素没有任何变化。这就可以得出一个结论:当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给迭代
变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有影响。
三错误代码演示1代码示例
import java.util.*;
public class IteratorErrorTest
{
public static void main(String[] args)
{
Collection books = new HashSet();
books.add('JSP');
books.add('Linux');
books.add('C++');
// 获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext())
{
String book = (String)it.next();
System.out.println(book);
if (book.equals('Linux'))
{
// 使用Iterator迭代过程中,不可修改集合元素,下面代码引发异常
books.remove(book);
}
}
}
}
运行结果
C++LinuxExceptioninthread'main'javutiConcurrentModificationExceptionatjavutiHashMap$HashIterator.nextNode(HashMap.java:143atjavutiHashMap$KeyIterator.next(HashMap.java:146atIteratorErrorTest.main(IteratorErrorTest.java:1
代码分析books.remove(boo;位于迭代块内,也就是在Iterator迭代Collection集合过程中修改了Collection集合,所以程序将在运行时引发异常。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点