草庐IT

Iterator

全部标签

java - 实现 java.lang.Iterator 时如何处理异常

java.lang.Iterator接口(interface)有3个方法:hasNext、next和remove。为了实现只读迭代器,您必须提供其中2个的实现:hasNext和next。我的问题是这些方法没有声明任何异常。因此,如果我在迭代过程中的代码声明了异常,我必须将我的迭代代码包含在try/catchblock中。我当前的策略是重新抛出包含在RuntimeException中的异常。但这有问题,因为检查的异常丢失了,客户端代码不再可以显式捕获这些异常。如何解决Iterator类中的这一限制?为了清楚起见,这里是一个示例代码:classMyIteratorimplementsIte

java - 实现 java.lang.Iterator 时如何处理异常

java.lang.Iterator接口(interface)有3个方法:hasNext、next和remove。为了实现只读迭代器,您必须提供其中2个的实现:hasNext和next。我的问题是这些方法没有声明任何异常。因此,如果我在迭代过程中的代码声明了异常,我必须将我的迭代代码包含在try/catchblock中。我当前的策略是重新抛出包含在RuntimeException中的异常。但这有问题,因为检查的异常丢失了,客户端代码不再可以显式捕获这些异常。如何解决Iterator类中的这一限制?为了清楚起见,这里是一个示例代码:classMyIteratorimplementsIte

由 ResultSet 支持的 Java 迭代器

我有一个使用ResultSet作为数据成员来实现Iterator的类。基本上这个类看起来像这样:publicclassAimplementsIterator{privateResultSetentities;...publicObjectnext(){entities.next();returnnewEntity(entities.getString...etc....)}publicbooleanhasNext(){//whattodo?}...}我如何检查ResultSet是否有另一行,以便创建有效的hasNext方法,因为ResultSet本身没有定义hasNext?我正在考虑执

由 ResultSet 支持的 Java 迭代器

我有一个使用ResultSet作为数据成员来实现Iterator的类。基本上这个类看起来像这样:publicclassAimplementsIterator{privateResultSetentities;...publicObjectnext(){entities.next();returnnewEntity(entities.getString...etc....)}publicbooleanhasNext(){//whattodo?}...}我如何检查ResultSet是否有另一行,以便创建有效的hasNext方法,因为ResultSet本身没有定义hasNext?我正在考虑执

参数化类型的空集合上的 Java 迭代器

在Java中,我需要从我的方法中返回一个迭代器。我的数据来自另一个对象,它通常可以给我一个迭代器,所以我可以返回它,但在某些情况下,基础数据为空。为了保持一致性,我想在这种情况下返回一个“空”迭代器,这样我的调用者就不必测试null。我想写这样的东西:publicIteratoriterator(){if(underlyingData!=null){returnunderlyingData.iterator();//works}else{returnCollections.emptyList().iterator();//compilererror}}但是Java编译器提示返回Iter

参数化类型的空集合上的 Java 迭代器

在Java中,我需要从我的方法中返回一个迭代器。我的数据来自另一个对象,它通常可以给我一个迭代器,所以我可以返回它,但在某些情况下,基础数据为空。为了保持一致性,我想在这种情况下返回一个“空”迭代器,这样我的调用者就不必测试null。我想写这样的东西:publicIteratoriterator(){if(underlyingData!=null){returnunderlyingData.iterator();//works}else{returnCollections.emptyList().iterator();//compilererror}}但是Java编译器提示返回Iter

java - HashSet.remove() 和 Iterator.remove() 不起作用

我在HashSet上调用Iterator.remove()时遇到问题。我有一组带有时间戳的对象。在将新项目添加到集合之前,我会遍历集合,识别该数据对象的旧版本并将其删除(在添加新对象之前)。时间戳包含在hashCode和equals()中,但不包含在equalsData()中。for(Iteratori=allResults.iterator();i.hasNext();){DataResultoldData=i.next();if(data.equalsData(oldData)){i.remove();break;}}allResults.add(data)奇怪的是,对于集合中的某

java - HashSet.remove() 和 Iterator.remove() 不起作用

我在HashSet上调用Iterator.remove()时遇到问题。我有一组带有时间戳的对象。在将新项目添加到集合之前,我会遍历集合,识别该数据对象的旧版本并将其删除(在添加新对象之前)。时间戳包含在hashCode和equals()中,但不包含在equalsData()中。for(Iteratori=allResults.iterator();i.hasNext();){DataResultoldData=i.next();if(data.equalsData(oldData)){i.remove();break;}}allResults.add(data)奇怪的是,对于集合中的某

java - 为什么我们需要在 Java 中的 ArrayList 上使用迭代器?

这个问题在这里已经有了答案:DoweeverneedtouseIteratorsonArrayList?(6个回答)关闭9年前.我正在阅读问题中提到的答案“DoweeverneedtouseIteratorsonArrayList?”。在回答中,用户这样说:“使用ArrayLists的迭代器的一个重要用例是当您想要在迭代时删除元素”。这甚至可以在Java中使用ArrayList的remove方法来实现。我的问题是为什么我们需要ArrayList中的迭代器?考虑代码:importjava.util.*;publicclassocajp66{publicstaticvoidmain(Str

java - 为什么我们需要在 Java 中的 ArrayList 上使用迭代器?

这个问题在这里已经有了答案:DoweeverneedtouseIteratorsonArrayList?(6个回答)关闭9年前.我正在阅读问题中提到的答案“DoweeverneedtouseIteratorsonArrayList?”。在回答中,用户这样说:“使用ArrayLists的迭代器的一个重要用例是当您想要在迭代时删除元素”。这甚至可以在Java中使用ArrayList的remove方法来实现。我的问题是为什么我们需要ArrayList中的迭代器?考虑代码:importjava.util.*;publicclassocajp66{publicstaticvoidmain(Str