Java集合框架我们有时称之为容器,但由于容器的内部结构不同,我们可能不知道如何通过容器中的元素,所以为了使容器中的元素更容易操作,java引入迭代器模式。所以java迭代器在java编程过程中有着不可忽视的作用,下文总结了java迭代器自测,大家可以用这些java迭代器自测测试一下自己目前的水平以及确认是否要更进一步的加强java迭代器的知识的学习。
1、假设e是用于某个数据结构的枚举。编写一个循环,用e打印数据结构的所有值。
答:典型代码如下:
2、假设I是用于某个数据结构的选代器。编写一个循环,用i打印数据结构的所有值。
答:典型代码如下:
3、假设v是一个整数向量。编写一个循环,用迭代器打印偶数值。
答:在这种情况下,必须确认已经采用强制转换的方式将Iterator变量的值赋值给一个整形变量,这一点非常重要:
4、你可以用一定的顺序写下来1到15的整数使每对相邻的整数形成一个完美的正方形。编写一个循环,打印Perfect(不需要验证数值的数量和范围),只在迭代器g产生的相邻整数值之和形成完美的正方形时。
答:代码采用布尔型值和布尔型值Math.sqrt函数:
5、因为Abstractlterator可以使用get法,因此next法似乎不需要返回一个值,为什么在我们的实现中仍然有回归值?
答:Abstractlterator Iterator类的实现,必须实现Iterator的方法。
6、编写迭代器,返回一串素数。它的生成器有什么相似之处?
答:
import structure*;
import java. util. Iterator;
public class Primeiterator extends Abstractiterator
{
protected Vector primes;
protected int current;
public Prime Iterator ()
// post: construct a generator that delivers primes starting at 2
{
reset();
}
public void reset()
// post: reset the generator to return primes starting at 3
{
primes= new Vector();
primes.add (口 ew Integer(2));
current =0;
}
public boolean hasNext()
//post: returns true - an indication that there are always more primes
{
return true;
}
publ Object get ()
return pr mes.get(current);
publ Object next()
II post: geneate the next prime
Integer N =(Integer)get();
current++;
if ( current >= primes. size() )
int n = N.intValue();
nt i, f;
teger F;
do
{
if(n ==2) n =3;
else n = n + 2;
for (i=O; i < pr mes. size ();工++)
F = (Integer)primes.get(i);
f = F. intValue ();
if ( (n f)== 0) break;
} while (i < primes. size());
primes.add(new Integer(n));
return N;
}
}
主要区别是素数迭代器返回Integer值,而不是int。
7、编写过滤迭代器, Orderedlterator,对另一个迭代器产生的值进行排序。假设基迭代器中最终不再有元素,但不能限制数量。
答:该解决方案使用有序列表。另一种方法是将值存储在一个向量中,或将所有值存储在一个向量中,然后进行快速排序。
8、写一个包含基迭代器和一个select方法定义为静态对象(称为 predicate)过滤法代器。这个迭代器只传递当它传递给那些 predicate对象 select 在该方法中,产生真值。
答:这意味着构建两个类和接口 Predicate 接口形式如下:
punlic interface predicate
{
public boolean select(Object item);
//pre: item is a valid ob] ect
// post: returns true or false, depending on the predicate tested
}
当传递给它的字符串对象的长度仅当10或更长时间,特定的 Predicate返回true
以上是8个java迭代器自测题,迭代器可以使容器中的元素操作更加简单,有了迭代器,java程序员在开发过程中,人们不再需要了解容器底部的结构来实现容器的遍历。我希望以上java迭代器自测题能起到查漏补缺的作用,从而掌握java迭代器的内容。