Tag: iterator

迭代在Java中的HashMap

我试图在Java中迭代hashmap,这应该是一件相当容易的事情。 但是,以下代码给了我一些问题: HashMap hm = new HashMap(); hm.put(0, “zero”); hm.put(1, “one”); Iterator iter = (Iterator) hm.keySet().iterator(); while(iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); System.out.println(entry.getKey() + ” – ” + entry.getValue()); } 首先,我需要在hm.keySet()。iterator()上强制转换Iterator,否则它会说“类型不匹配:无法从java.util.Iterator转换为Iterator”。 但后来我得到“方法hasNext()未定义类型Iterator”,并且“方法hasNext()未定义类型Iterator”。

HashMap的迭代器是什么意思是快速失败并且HashTable的枚举器不是?

我正在查找这两个类之间的区别,这一点在很多答案中得出了这个博客的来源: http : //javarevisited.blogspot.com/2010/10/difference-between-hashmap-and。 HTML 但是我没有完全理解它。 有人可以详细说明吗? 或许有一个例子? 感谢您的关注!

java.util.ConcurrentModificationException&iteration?

我是Arraylists和迭代器的新手,这是我第一次遇到这个例外。 我有一个ArrayList你想我做以下算法: for (Character c:u){ if(k==1){ //base case if(isAnswer(s+u.get(0))) System.out.println(s+u.get(0)+” is the correct sequence.”+ ‘\n’); return; } else{ u.remove(c); puzzleSolve(k-1, s+c , u); u.add(c); removeLastChar(s); } } //end of for each 当我搜索这个exception时,我发现我无法删除每个arrayl上的iterms weth并且我需要使用迭代器,但是我很困惑我在哪里以及如何确定我必须放入while(iter.hasNext())这段代码就是这样的东西。 如果你能帮助我,我将不胜感激 PS。 s是String(最初为空)&k是int

如何使用ListIterator?

我正在使用ArrayList的iterator: List al = new ArrayList(); // —– Logic for adding elements—– Iterator it = al.iterator(); // logic to retrieve elements—- 然后它尝试使用ListIterator,就像这样。 ListIterator li = al.listIterator(); while(li.hasNext()) { System.out.print(li.next()+” “); } 有效 … 我试过这个用于反向检索 ListIterator li = al.listIterator(); while(li.hasPrevious()) { System.out.print(li.previous()+” “); } 但它不起作用。 以下代码正常运行。 ListIterator li = al.listIterator(al.size()); while(li.hasPrevious()) { System.out.println(li.previous()+” “); } 我想知道有一些generics的概念,但不清楚它。 […]

arraylist并发修改

我正在用java创建一个multithreading聊天。 当用户u1向用户u2发送消息但用户u2未连接时,用户u1将消息发送给服务器,用户u2将在连接到服务器后收到消息。 未发送的消息将添加到ArrayList。 一旦用户连接,他就会检查他是否是待处理消息的接收者。 如果是,则将消息发送给他,然后从待处理消息列表中删除。 我是这样做的: for(Iterator itpendingmsgs = pendingmsgs.iterator(); itpendingmsgs.hasNext();) { String pendingmsg = itpendingmsgs.next(); String dest = pendingmsg.substring(4); if (protocol.author.equals(dest)) { sendMsg(msg); pendingmsgs.remove(pendingmsg); } } 这就是我得到的: Exception in thread “Thread-3” java.util.ConcurrentModificationException at java.util.AbstractList$Itr.checkForComodification(Unknown Source) at java.util.AbstractList$Itr.next(Unknown Source) at ChatServer$ClientConnection.run(ChatServer.java:383) at java.lang.Thread.run(Unknown Source) 我如何解决它? 是因为我正在使用迭代器吗?

将Iterator向前移动到for语句和while语句之间的区别

当我使用对象的Iterator时,我使用while循环 (如每本书中学习Java,如Bruce Eckel的Thinking in Java ): Iterator it=… while(it.hasNext()){ //… } 但有时我看到的是有人使用for循环 : Iterator it=… for (Iterator it=…; it.hasNext();){ //… } 我不明白这个选择: 当我有一个带有序数序列的集合(作为数组)或者带有一个特殊的步骤规则(通常声明为一个简单的增量counter++ )时,我使用for循环 。 我在循环结束时使用while循环 ,我没有这个约束,但只有退出的逻辑条件。 这是一个没有其他原因的样式编码问题,或者存在一些我不知道的其他逻辑(例如性能)? 感谢您的每一个反馈

列表与列表迭代器

我有一个清单: List myList = new ArrayList(); 要从此列表中获取,有两种方法: 1。 for(Object obj : myList ) { // some code } 2。 Iterator objIt = myList.iterator(); while(obj.hasNext()) { Object obj = (Object)objIt.next(); // some code } 我的问题是哪一个内存有效并且快速迭代?

java.util.NoSuchElementException在java中使用iterator

我正在尝试使用迭代器在我的Logs列表中遍历列表。 目标是搜索包含与新日志相同的电话号码,类型和日期的日志 但是,我在条件语句中得到了java.util.NoSuchElementException。 有谁知道可能导致问题的原因? 我的代码 public void addLog(String phonenumber, String type, long date, int incoming, int outgoing) { //Check if log exists or else create it. Log newLog = new Log(phonenumber, type, date, incoming, outgoing); //Log exists Boolean notExist = false; //Iterator loop Iterator iterator = logs.iterator(); while (iterator.hasNext()) { //This is where get the […]

Java8生成器的自然数无限序列

我用Java8 iterator为自然数的无限序列( Stream )定义了natural 。 IntStream natural = IntStream.iterate(0, i -> i + 1); natural .limit(10) .forEach(System.out::println); 现在,我想用Java8 generator来定义它。 静态流生成(供应商) 什么是最简单的方法? 谢谢。

带迭代器的java.util.ConcurrentModificationException

我知道如果试图通过简单的循环从集合中删除循环,我将得到这个exception: java.util.ConcurrentModificationException 。 但我正在使用Iterator,它仍然会产生这个exception。 知道为什么以及如何解决它? HashSet tableRecords = new HashSet(); … for (Iterator iterator = tableRecords.iterator(); iterator.hasNext(); ) { TableRecord record = iterator.next(); if (record.getDependency() == null) { for (Iterator dependencyIt = tableRecords.iterator(); dependencyIt.hasNext(); ) { TableRecord dependency = dependencyIt.next(); //Here is the line which throws this exception if (dependency.getDependency() != null && dependency.getDependency().getId().equals(record.getId())) { […]