Tag: iterator

如何在没有ConcurrentModificationException的情况下对Collection 进行交互并修改其项目?

我需要做这样的事…… Collection myCollection; ///assume it is initialized and filled for(Iterator index = myCollection.iterator(); index.hasNext();) { Object item = index.next(); myCollection.remove(item); } 显然这会抛出ConcurrentModificationException … 所以我尝试了这个但是看起来并不优雅/高效并抛出类型安全:从Object到T的未经检查的强制转换警告 Object[] list = myCollection.toArray(); for(int index = list.length – 1; index >= 0; index–) { myCollection.remove((T)list[index]); }

基于迭代器索引从Map <List >获取Select标签的列表

我有一个包含List的Map ,如下所示。 Map<String,List> dynamicList = new HashMap <String,List>(); 在上面的Map我有像dynamiclist1 , dynamiclist5 , dynamiclist6等的键。 我必须根据另一个迭代器索引显示这个dynamicList ,如下所示: 我想要这样的#dynamicList.dynamiclist%{#stat.index}来获取该列表。

在Java中覆盖Iterables 的正确方法

这是我为实现链表而编写的代码, private class DequeIterator implements Iterable { private Node pElement; DequeIterator() { pElement = first; } public boolean hasNext() { return pElement != null; } public Item next() { if (!this.hasNext()) { throw new NoSuchElementException(); } Item ret = pElement.it; pElement = pElement.next; return ret; } public void remove() { throw new UnsupportedOperationException(); } } […]

无法从Node 转换为Node ?

我只是从我的一本书中做了一些练习,我很好奇为什么我在eclipse中得到以下错误: Type mismatch: cannot convert from type DoublyLinkedList.Node to DoublyLinkedList.Node 码: import java.util.Iterator; import java.util.ListIterator; import java.util.NoSuchElementException; public class DoublyLinkedList<E extends Comparable> implements Iterable{ private int size = 0; private Node head; private Node tail; /** Returns a list iterator object for the list at * the specified index */ public DoublyLinkedList(){ } private static […]

使用Iterator循环时将项添加到HashMap

我有一个使用Iterator遍历HashMap的程序,并且在循环内部,我正在添加HashMap – 这导致了ConcurrentModificationException。 我已经看到ListIterator有一个add()函数来处理这个,但Iterator没有。 HashMap设置如下 – HashMap<Pair, Object> 像这样的迭代器 – Iterator<Entry<Pair, Object>> iter; 使用Object(不是真名)是我程序中的一个类。 在我循环或任何其他选项时,有谁知道如何添加到迭代器?

如何从iterator()获取正确顺序的元素

这是我的代码,用于将数据存储到HashMap中并使用迭代器显示数据 public static void main(String args[]) { HashMap hm = new HashMap(); hm.put(“aaa”, “111”); hm.put(“bbb”, “222”); hm.put(“ccc”, “333”); hm.put(“ddd”, “444”); hm.put(“eee”, “555”); hm.put(“fff”, “666”); Iterator iterator = hm.keySet().iterator(); while (iterator.hasNext()) { String key = (String) iterator.next(); String val = hm.get(key); System.out.println(key + ” ” + val); } } 但它没有按照我存储的顺序显示。 有人可以告诉我哪里出错了? 我怎样才能获得订单中的元素?

在Java TreeMap中查找元素位置

我正在使用字符串TreeMap ,并使用它来实现单词的Dictionay。 然后我有一个文件集合,并希望在字典定义的向量空间(单词空格)中创建每个文件的表示。 每个文件都应该有一个表示它的向量,具有以下属性: 矢量应该与字典大小相同 对于文件中包含的每个单词,向量在与字典中的单词位置对应的位置应该具有1 对于未包含在文件中的每个单词,向量在对应于字典中单词位置的位置应该具有-1 所以我的想法是使用Vector来实现这些向量。 (这种表示集合中文档的方式称为布尔模型 – http://www.site.uottawa.ca/~diana/csi4107/L3.pdf ) 我在创建这个向量的过程中遇到的问题是我需要一种方法来查找字典中单词的位置,如下所示: String key; int i = get_position_of_key_in_Treemap(key); <— purely invented method… 1)我可以在TreeMap上使用这样的方法吗?如果没有,你能提供一些代码来帮助我自己实现吗? 2)TreeMap上是否有一个迭代器(按字母顺序排列),我可以获得它的位置? 3)最终我应该使用另一个类来实现字典?(如果你认为使用TreeMaps我不能做我需要的)如果是的话,哪个? 提前致谢。 增加部分: 由dasblinkenlight提出的解决方案看起来很好,但是存在复杂性问题(由于将密钥复制到数组中而与字典的维度呈线性关系),并且不能接受为每个文件执行此操作的想法。 对我的问题还有其他想法吗?

使用ListIterator在Java中的LinkedList上来回移动

我有一个LinkedList,我需要多次来回迭代。 我正在使用它来跟踪将动态创建的工作流中的一系列页面。 这并不像我期望的那样。 鉴于这个例子: LinkedList navigationCases; navigationCases.add(“page1”); navigationCases.add(“page2”); navigationCases.add(“page3”); navigationCases.add(“page4”); ListIterator navigationItr = navigationCases.listIterator(); navigationItr.next(); // Returns page1 navigationItr.next(); // Returns page2 navigationItr.previous(); //Returns page2 again navigationItr.next(); //Returns page2 again 我想也许我正在错误地构建我的列表,或者使用Iterator错误,但在阅读文档之后,这似乎是设计的: ListIterator没有当前元素; 它的光标位置总是位于调用previous()返回的元素和调用next()返回的元素之间。 和: (Next)返回列表中的下一个元素。 可以重复调用此方法以遍历列表,或者与之前的调用混合以来回传递。 (注意,对next和previous的交替调用将重复返回相同的元素。) 因此,在阅读本文之后,很明显为什么我的代码表现得像它那样。 我只是不明白为什么它应该这样工作。 甚至删除似乎是向后弯曲以适应这种实现: 请注意,remove()和set(Object)方法没有根据光标位置定义; 它们被定义为对next()或previous()调用返回的最后一个元素进行操作。 从概念上讲,LinkedList似乎很好地模拟了我的工作流案例,但我不能使用行为方式的Iterator。 我在这里遗漏了什么,或者我应该只写自己的class级来维护案例列表并浏览它们?

Java foreach循环:for(整数i:列表){…}

当我使用JDK5时如下 ArrayList list = new ArrayList(); for (Integer i : list) { //cannot check if already reached last item } 另一方面,如果我只使用Iterator ArrayList list = new ArrayList(); for (Iterator i = list.iterator(); i.hasNext();) { //i can check whether this is last item if(i.hasNextItem()){ } } 如何检查我是否已经使用for (Integer i : list) {到达最后一项for (Integer i : list) {

如何获取LinkedHashMap的keyIterator?

通过查看Sun的LinkedHashMaps的源代码,我看到有一个名为KeyIterator的私有类,我想使用它。 我怎样才能获得访问权限?