Tag: iterator

iterator hasnext()返回true但next()抛出NoSuchElementException

当我调试我的代码时,我发现Iterator的hasNext()方法返回true ,但next()方法抛出了NoSuchElementException。 以下是我的代码: Collection restBuy=em.createQuery(“select t from TradeStock …t.getResultList(); if(!restBuy.isEmpty()) { Iterator itrest=restBuy.iterator(); while(itrest.hasNext()) { TradeStock ts=(TradeStock)itrest.next(); x+=ts.getTradeExecutedQuantity(); } } 我错了什么?

ConcurrentModificationException(Java)

Exception in thread “main” java.util.ConcurrentModificationException Squash the PC dirties the room Violet. The room’s state is now dirty Lily the animal growls The Animal Lily left the room and goes to Green through the west door. at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828) at homework5.Room.critReactRoomStateChange(Room.java:76) at homework5.PC.play(PC.java:121) at homework5.Main.main(Main.java:41) Java Result: 1 这是我收到的错误。 我的方法看起来像 public void critReactRoomStateChange(String command, […]

是什么导致java.util.HashSet和HashMap.keySet()类的iterator()稍微不可预测的排序?

六年前,我烧了几天试图追捕我完全确定的框架随机响应的地方。 在精心追逐整个框架确保它全部使用相同的Random实例后,我继续追逐单步执行代码。 这是高度重复的迭代自调用代码。 更糟糕的是,该死的效果只会在完成大量迭代后出现。 在+6小时之后,当我在javadoc中为HashSet.iterator()发现一行时,我终于处于智慧状态,表明它不能保证返回元素的顺序。 然后,我浏览了整个代码库,并用LinkedHashSet替换了所有HashSet实例。 而且,我的框架正好向确定性生活迈进! 哎呀! 我现在刚刚经历过同样的FREAKIN影响(至少这次只有3个小时)。 无论出于何种原因,我都错过了HashMap恰好为其keySet()提供相同方式的小细节。 这是关于这个主题的SO线程,虽然讨论从来没有完全回答我的问题: HashSet的迭代顺序 所以,我很好奇为什么会这样。 鉴于我两次都有一个巨大的单线程java应用程序在完全相同的实例化/插入空间中使用完全相同的JVM参数(来自同一批处理文件的多次运行)在同一台计算机上运行,​​几乎没有其他任何运行,这可能会扰乱JVM使得HashSet和HashMap在经过大量迭代之后会出现不可预测的行为(并不是因为javadoc说不依赖于顺序而不一致)? 从源代码(java.util中的这些类的实现)或您对JVM的了解(可能是某些GC影响内部java类在分配内部存储空间时获得非零内存的位置)的任何想法?

如何从Iterator 中创建无限的Stream ?

看看下面我上面写的课: public class FibonacciSupplier implements Iterator { private final IntPredicate hasNextPredicate; private int beforePrevious = 0; private int previous = 1; private FibonacciSupplier(final IntPredicate hasNextPredicate) { this.hasNextPredicate = hasNextPredicate; } @Override public boolean hasNext() { return hasNextPredicate.test(previous); } @Override public Integer next() { int result = beforePrevious + previous; beforePrevious = previous; previous = result; […]

Java,使用Iterator搜索ArrayList并删除匹配的对象

基本上,用户提交一个字符串,Iterator在其中搜索ArrayList。 找到时,Iterator将删除包含String的对象。 因为这些对象中的每一个都包含两个字符串,所以我发现将这些行写成一个字符时很麻 Friend current = it.next(); String currently = current.getFriendCaption(); 谢谢你的帮助!

Java Joda Time – 实现Date范围迭代器

我试图用Joda时间没有成功实现Date迭代器。 我需要一些东西,允许我从startDate到endDate的所有日子迭代 你知道怎么做吗?

为什么这段代码不会导致ConcurrentModificationException?

我正在阅读有关ConcurrentModificationException以及如何避免它的内容。 找到一篇文章 。 该文章中的第一个列表的代码类似于以下内容,这显然会导致exception: List myList = new ArrayList(); myList.add(“January”); myList.add(“February”); myList.add(“March”); Iterator it = myList.iterator(); while(it.hasNext()) { String item = it.next(); if(“February”.equals(item)) { myList.remove(item); } } for (String item : myList) { System.out.println(item); } 然后它继续解释如何用各种建议解决问题。 当我试图重现它时,我没有得到例外! 为什么我没有得到例外?

在值上迭代两次(MapReduce)

我收到一个迭代器作为参数,我想迭代两次值。 public void reduce(Pair key, Iterator values, Context context) 可能吗 ? 怎么样 ? 签名是由我使用的框架(即Hadoop)强加的。 – 编辑 – 最后, reduce方法的真实签名是iterable 。 我被这个wiki页面误导了(这实际上是我发现的wordcount的唯一非弃用(但错误)示例)。