草庐IT

ITERATOR

全部标签

PHP RecursiveIteratorIterator 和嵌套集合

我在层次结构中有一组对象。有一个顶级“根”节点,它有子节点,子节点又有子节点等。我正在尝试使用嵌套集模型将这个结构保存到数据库中,其中每个节点的每个“边”都被编号以定义层次结构,如ManagingHierarchicalDatainMySQL:(来源:mysql.com)我的问题是计算左右值。我通常使用RecursiveIteratorIterator来迭代层次结构,但我不知道如何在不求助于通过引用解析索引变量的递归函数的情况下计算数字。有什么想法吗?它可能没有用,但这是我目前拥有的(不正确的)代码:$iterator=newRecursiveIteratorIterator(newN

PHP 延迟加载迭代器

我有一个迭代器类,它循环遍历对象数组并在需要时(未加载到内存中时)从数据库中延迟加载。问题是这是迭代大约200,000次,我从这里发现:http://www.garfieldtech.com/blog/magic-benchmarks迭代器接口(interface)非常慢。谁知道不使用迭代器接口(interface)进行延迟加载的好方法? 最佳答案 您可以使用普通的旧式for循环。迭代器接口(interface)可能很慢,但是当执行200.000个数据库查询时,瓶颈很可能不是迭代器。我建议分析您的代码,看看它是否真的需要在这个位置进

java - Fast-fail - 异常仅在添加元素时发生,而不是在删除时发生

Fast-Fail:意味着如果他们检测到自迭代开始以来集合已经改变,他们抛出未经检查的ConcurrentModificationException。我写了一个测试例子来证明这一点:Stringhi="Hi";list.add(hi);list.add("Buy");System.out.println("listbefore:"+list);for(Iteratoriterator=list.iterator();iterator.hasNext();){Stringstring=iterator.next();list.add("Good");}输出是:listbefore:[Hi

java - 如何在java中一个接一个地遍历两个不同类型的泛型列表?

我想创建一个迭代器类,它允许我一个接一个地迭代具有泛型类型(例如lst1整数、lst2字符串)的列表。为此,我必须考虑以下给定情况。接口(interface)是一个通用的迭代器。这部分代码不能修改。interfaceIterator{Enext();booleanhasNext();}列表类也定义如下。最重要的是,列表对象可以使用方法getIterator()返回迭代器对象。这部分代码不能修改。classList{classListNode{Tval;ListNodenext;ListNode(Tv){val=v;next=null;}}ListNodehead;List(ListNo

Java Iterables "Resetting"带有每个 Foreach 构造的迭代器

我相信我已经注意到对于某些Iterables(比如这个IterableStringclass),要么创建了一个新的迭代器,要么迭代器以某种方式重置为每个新的foreach构造的开始,但这似乎不会发生在其他可迭代...例如,如果您运行以下代码:importjava.util.ArrayList;publicclasstest{publicstaticvoidmain(Stringargs[]){IterableStringx=newIterableString("ONCE");System.out.println("***");for(charch:x){System.out.print

java - Java foreach 循环中的 ClassCastException

以下代码在什么情况下会出现ClassCastException:importjava.util.Arrays;importjava.util.List;publicclassGenerics{staticListgetObjects(){returnArrays.asList(1,2,3);}publicstaticvoidmain(String[]args){Listlist=getObjects();for(Objecto:list){//ClassCastException?System.out.println(o);}}}我们在生产环境中有一个类似的案例(我知道这是不好的做法)

java - java.util.Iterator 的实现是否使用状态模式?

我只是在寻找一个合理的答案如何实现java.util.Iterator正在进入状态设计模式编辑请引用以下链接ExamplesofGoFDesignPatternsinJava'scorelibraries 最佳答案 那个,我不确定。据我所知,它是IteratorDesignPattern的一个实现。.但是,可以错误地认为它使用了StatePattern,因为调用next()会影响Iterator的状态目的。但是,IMO,它并不是真正的StatePattern实现,因为它不会更改必须执行操作的基础对象。维基百科有一个很好的Java示例

java - 如何使用迭代器遍历二维 ArrayList?

我想遍历二维ArrayList,其中包括使用迭代器的String对象。我还想以一种让我选择是先水平(行)迭代还是垂直(列)迭代的方式进行迭代,方法是使用boolean值。我如何在Java中实现它?到目前为止我尝试了什么。publicclassIterateThisimplementsIterator{ArrayList>array;publicIterateThis(){array=newArrayList>();array.add(newArrayList());array.add(newArrayList());array.add(newArrayList());array.get

Java 日期迭代器工厂,具有指定如何计算间隔的规则

我正在寻找一个Java类,我可以在其中指定一组日期规则,例如“每3个星期日”和“每两个月的第一个星期一”。我希望能够从中得到类似无限迭代器的东西(.next()将返回与规则集匹配的下一个日期)。我想我可以自己构建它-但日历很麻烦,而且感觉类似的东西应该已经存在了。我讨厌自己重新发明一个更糟糕的轮子。有人知道这样的事情吗?我一直在研究JODA,它似乎为它奠定了基础,但似乎没有提供我想要的全部功能.. 最佳答案 我认为没有现成的joda-time迭代器或JavaCalendarAPI就此而言,但是对于joda,它是如此简单,您应该使用它

java - HashMap:以随机顺序迭代键值对

我有一个HashMap,我想在每次获得迭代器时以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前“打乱”map(或者,如果需要,“打乱”迭代器)。我有两个选择:1)使用LinkedHashMap的方法并在内部保留条目列表,将其就地打乱并在调用迭代器时返回该View。2)采用map.entrySet(),构造一个ArrayList并在其上使用shuffle()。虽然这两种方法看起来与我非常相似,但我期待非常大的HashMap,所以我真的很关心细节和内部结构,因为我真的不能浪费内存或计算。 最佳答案 重新洗牌一个大的集合