Tag: 迭代器

使用Struts 2迭代HashMap <String,ArrayList >

我目前在Struts2和s:iterate标签方面遇到了一些困难。 我想显示一个标签,它是HashMap中的关键字,后面跟着一个表(HashMap中的值),其中包含了ArrayList中每个元素,用于HashMap中的每个元素。 例如, label ———- | test1 | ———- | test2 | ———- label2 ———- | test1 | ———- | test2 | ———- 我看了很多关于HashMap的例子,但没有找到我的案例。 我怎样才能做到这一点 ? 谢谢,

同时为两个列表的内容提供迭代器?

假设我有这个: public class Unit { … List mobileSuits; List pilots; … } 我想以最简单的方式在该类之外迭代这对中的每一对。 我应该怎么做呢? 我想过这样做: public class Unit { … Iterator iteratinMechas; Iterator iteratinPeople; class IteratorCustom implements Iterator { public boolean hasNext() { return iteratinMechas.hasNext() && iteratinPeople.hasNext(); } public void remove() { iteratinMechas.remove(); iteratinPeople.remove(); } public Object next() { // /!\ } } public Iterator […]

如何在Java列表中获得反向列表视图?

我想在列表上有一个反向列表视图(以类似于List#sublist方式在List#sublist提供子列表视图)。 是否有一些提供此function的function? 我不想制作任何类型的列表副本,也不想修改列表。 如果我在这种情况下至少可以在列表上获得反向迭代器就足够了。 另外,我知道如何自己实现这一点。 我只是想问Java是否已经提供了这样的东西。 演示实施: static Iterable iterableReverseList(final List l) { return new Iterable() { public Iterator iterator() { return new Iterator() { ListIterator listIter = l.listIterator(l.size()); public boolean hasNext() { return listIter.hasPrevious(); } public T next() { return listIter.previous(); } public void remove() { listIter.remove(); } }; } }; } 我刚刚发现一些List实现有descendingIterator() ,这是我需要的。 […]

Iterator的remove方法实际上是如何删除一个对象的

我们都知道,在迭代它时从集合中删除对象的最安全的“且可能只是安全的”方法是首先检索Iterator ,执行循环并在需要时删除; Iterator iter=Collection.iterator(); while(iter.hasNext()){ Object o=iter.next() if(o.equals(what i’m looking for)){ iter.remove(); } } 我想要了解的,并且遗憾的是没有找到深入的技术解释,是如何执行此删除, 如果: for(Object o:myCollection().getObjects()){ if(o.equals(what i’m looking for)){ myCollection.remove(o); } } 将抛出一个ConcurrentModificationException ,“技术术语” Iterator.remove()做什么? 它是否删除了对象,打破了循环并重新启动循环? 我在官方文档中看到: “删除当前元素。如果尝试调用remove()之前没有调用next(),则抛出IllegalStateException 。” 部分“删除当前元素”,让我想到在“常规”循环中发生的完全相同的情况=>(执行相等性测试并在需要时删除),但为什么Iterator循环ConcurrentModification安全?