jjzjj

reverse_iterator

全部标签

java - 为什么 iterator.hasNext 不适用于 BlockingQueue?

我试图在BlockingQueue上使用迭代器方法,发现hasNext()是非阻塞的-即它不会等到添加更多元素,而是在没有元素时返回false。下面是问题:这是糟糕的设计还是错误的期望?有没有办法使用阻塞BLockingQueue的方法与它的父Collection类方法(例如,如果某些方法期望一个集合,我可以通过一个阻塞吗排队希望其处理将等到队列有更多元素)这是一个示例代码块publicclassSomeContainer{publicstaticvoidmain(String[]args){BlockingQueuebq=newLinkedBlockingQueue();SomeCo

java - Java 中 iterable<Integer> 的 Collections.max 函数

JavaCollections.max仅采用可排序对象的集合。然而,由于集合不一定排序,我看不出有任何理由不为可迭代类型实现相同的max函数。Iterable>是否有max方法?在Java的标准库中? 最佳答案 虽然Guava不是Java的标准库,但它已经足够接近了......Ecom.google.common.collect.Ordering#max(Iterableiterable)例如Tmax=Ordering.natural().max(myIterable);至于为什么标准库没有实现,可能是因为aCollectionmu

Java Iterator实现编译错误: does not override abstract method remove()

为什么会出现以下编译错误:LRIterator不是抽象的,不会覆盖java.util.Iterator中的抽象方法remove()注意,实现是针对链表的publicIteratoriterator(){returnnewLRIterator();}privateclassLRIteratorimplementsIterator{privateDLLNodeplace;privateLRIterator(){place=first;}publicbooleanhasNext(){return(place!=null);}publicObjectnext(){if(place==null)

java - 如何在 java 中从 Iterable 创建集合?

例如,我有一组几何图形:Setfigures;有两种图形:正方形和圆形。我想使用googlecollections获取一组正方形:Iterables.filter(figures,squarePredicate);但是过滤器方法返回Iterable...我如何从Iterable创建Set?(不在Iterable上使用循环) 最佳答案 我认为您需要重新考虑您的要求。你需要一组正方形。为什么?集合只为您提供唯一性和迭代性。您在Iterable中具有唯一性,因为源是一个集合,并且您可以迭代Iterable中的项目。那你为什么需要这套?只有

java - 为什么java中Collections的fill(),copy(),reverse(),shuffle()是这样实现的

根据javadoc...Collections.fill()写成如下:publicstaticvoidfill(Listlist,Tobj){intsize=list.size();if(sizeitr=list.listIterator();for(inti=0;i很容易理解为什么他们不使用listIteratorif(size截至RandomAccess的条件。但是size有什么用呢?在上面?我的意思是,与使用iterator相比,是否有显着的性能优势?对于size>=FILL_THRESHOLD而不是size?我也看到了Collections.copy()的相同方法:public

java - <c :foreach jsp iterate over list

找了好几个例子,还是没搞定。我将GOOD对象列表从Controller传递到jsp页面。试图遍历列表对象,但它只重复显示一个元素。我应该用bean吗?如果是,您能否为我的案例提供更具体的示例。更新这是Controller:@RequestMapping(value={"/supply"},method=RequestMethod.POST)publicStringconsumptFormulate(Localelocale,Modelmodel,@ModelAttributeConsumptionFormcmd,HttpServletRequestrequest){String[]s_

java - 通过拆分和运行将 ListenableFuture<Iterable<A>> 转换为 Iterable<ListenableFuture<B>>

我正在寻找转换ListenableFuture>的最佳方法进入个体序列ListenableFutures.这是我正在寻找的方法签名:publicIterable>splitAndRun(finalListenableFuture>elements,finalFunctionfunc,finalListeningExecutorServiceexecutor);很明显,如果我返回ListenableFuture>>就可以了,但我觉得我应该能够拆分并运行它并保持其异步性。这是我到目前为止的代码,但您会注意到讨厌的.get()最后,这反而毁了东西。如果我把事情复杂化了,请原谅。publicc

Java : Issue with capturing execution time per iteration in a Map

我需要在迭代中捕获某些代码的执行时间。我决定使用Map用于捕获此数据,其中Integer(key)是迭代次数,Long(value)是该迭代消耗的时间,以毫秒为单位。我编写了以下Java代码来计算每次迭代所花费的时间。我想确保在调用实际代码之前所有迭代所花费的时间为零。令人惊讶的是,下面的代码在每次执行时都有不同的行为。有时,我会得到所需的输出(所有迭代都为零毫秒),但有时我会在一些随机迭代中得到正值甚至负值。我试过替换System.currentTimeMillis();使用以下代码:newjava.util.Date().getTime();System.nanoTime();or

java - 为什么 Queue.poll 比 Iteration 快? (java.util.concurrent.ConcurrentLinkedQueue)

我有一段代码可以从队列中获取所有元素。之后我不关心队列的状态,我可以确信在我从队列中删除元素时队列不会被修改。我最初使用迭代器来提取元素,因为我认为它比轮询元素更快...但我运行了以下测试:ConcurrentLinkedQueuequeue=newConcurrentLinkedQueue();for(inti=0;ilist=newLinkedList();longstart=System.currentTimeMillis();for(Objectobject:queue)list.add(object);longtime1=System.currentTimeMillis()-

java - java核心的Iterator违反单一职责原则

为什么java.util.Iterator接口(interface)有方法remove()?当然有时候这种方法是必要的,而且大家都已经习惯了它的存在。但实际上迭代器的主要和唯一目标只是提供访问容器元素。当有人想为此接口(interface)创建自己的实现,但由于任何原因不能或不想提供删除元素的能力时,他将被迫抛出UnsupportedOperationException。抛出该异常通常表示架构没有经过深思熟虑或存在设计缺陷。我真的不明白为什么会做出这样的决定。而且我猜它会更正确地分离一个特定的子接口(interface)来支持可选的方法:为什么remove()是Iterator的一部分