Tag: 迭代器

Java删除arraylist迭代器

我在我的class级’Bomb’的Java中有一个ArrayList。 这个类有一个方法’isExploded’,如果炸弹爆炸,这个方法将返回true,否则返回false。 现在我试图遍历这个arraylist,调用此方法isExploded并从列表中删除元素,如果它返回true。 我知道如何迭代: for (Iterator i = bombGrid.listIterator(); i.hasNext();) { if () { i.remove(); } 但我不知道如何通过迭代器访问Bomb类本身的方法isExploded。 有谁知道答案吗? 此致 卢克索

失败快速迭代器

我得到了这个定义:正如名称所暗示的那样,一旦他们意识到自迭代开始以来已经改变了Collection的结构,它就会失败。 迭代开始以来意味着什么? 是Iterator之后的意思是it = set.iterator()这行代码? public static void customize(BufferedReader br) throws IOException{ Set set=new HashSet(); // Actual type parameter added **Iterator it=set.iterator();**

Java – 迭代列表中的每两个元素

在同时处理2个元素的同时迭代列表的最佳方法是什么? 例: List strings = Arrays.asList(“item 1”, “item 2”, “item 3”, “item 4”); for(int i = 0; i i + 1){ second = strings.get(i + 1); } System.out.println(“First [” + first + “] – Second [” + second + “]”); } 结果是: First [item 1] – Second [item 2] First [item 2] – Second [item […]

在TreeSet上使用迭代器

情况:我有一个自定义对象的TreeSet,我也使用了自定义比较器。 我已经创建了一个在这个TreeSet上使用的迭代器。 TreeSet ts=new TreeSet(); Iterator itr=ts.iterator(); while(itr.hasNext()){ Custom c=itr.next(); //Code to add a new element to the TreeSet ts } 问题:我想知道如果我在while循环中向TreeSet添加一个新元素,那么新元素是否会立即排序。 换句话说,如果我在while循环中添加一个新元素并且它小于我当前在c中保存的元素,那么在下一次迭代中我将获得与上一次迭代中相同的元素吗?(因为在排序之后,新添加的元素将占据当前元素之前的某个位置。

如何在Java中将迭代器实现为类的属性

假设我有这个简单的MyArray类,有两个简单的方法:add,delete和iterator。 在main方法中,我们可以看到它应该如何使用: public class MyArray { int start; int end; int[] arr; myIterator it; public MyArray(){ this.start=0; this.end=0; this.arr=new int[500]; it=new myIterator(); } public void add(int el){ this.arr[this.end]=el; this.end++; } public void delete(){ this.arr[this.start]=0; this.start++; } public static void main(String[] args){ MyArray m=new MyArray(); m.add(3); m.add(299); m.add(19); m.add(27); while(m.it.hasNext()){ System.out.println(m.it.next()); } } 然后MyIterator应该以某种方式实现: import java.util.Iterator; […]

java中的迭代器类型(弱一致)

我理解fail-fast(LinkedList)和故障安全(copyonwrite)迭代器,但是弱的一致性仍然是个谜。 文档说它可能反映了底层集合的变化,但是没有保证。 所以我认为弱一致性不会创建后备集合的副本。 (在并发Map中,它在同一个bucketarray上工作)。 我假设如果一个线程A创建了一个迭代器并且经过了一半,那么当线程B将一个项目放入数组开头的存储区时,这个更改将不会对线程A的迭代器可见。 如果B将该项放到数组的末尾,A就会看到它。 是否可能有一个nosuchelement例外? 如果线程A创建一个迭代器,然后遍历到一个项目X,它有一个下一个项目Y,然后jvm停止线程A并恢复线程B,谁删除Y.这对线程A是可见的(我想是这样,否则并发映射将不会’是线程安全的,但对其迭代器的实现方式一无所知),因为它对线程A是不可见的,因此它很容易抛出exception。

如何“查看”Java Scanner上的下一个元素?

也就是说,如何在不删除迭代器的情况下获取迭代器的下一个元素? 我可能会或可能不想根据其内容删除它。 我有一个文件扫描程序,我使用Scanner next()方法迭代XML标记。 提前致谢。

如果Set包含带有一些字符串值的对象,如何检入java?

我有一组对象。 每个对象都有String值。 我需要选择具有this值等于“direction”的所有对象。 没有迭代集合是否可能? 谢谢。

List Iterator的add()方法对迭代器做了什么?

我希望能够使用ListIterator将元素插入到ArrayList中,但是在阅读与ListIterator类的add方法相关的文档之后我甚至感到困惑,如果我这样做的话 for(int i = 0 ; i < list.size() ; ++i) listIterator.add( list.get(i) ); 这段代码片段对我的列表迭代器做了什么,它在哪里移动列表迭代器? 当我运行以下代码时,我得到的结果是“嗨” – : import java.util.ArrayList; import java.util.ListIterator; public class ListIter { public static void main(String[] args) { String[] s = {“Hi”, “I”, “am”, “Ankit”}; ArrayList list = new ArrayList(); ListIterator listIterator = list.listIterator(); for (int i = 0; i < […]

List.iterator()线程安全吗?

在Java中: List.iterator()是否是线程安全的,即返回的迭代器是在任何时候反映列表的当前状态还是在创建列表时反映列表的状态?