Java集合框架的集合类,我们有时候称之为容器,但因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素,所以为了使对容器内元素的操作更为简单,java引入了迭代器模式。所以java迭代器在java编程过程中有着不可忽视的作用,下文总结了java迭代器自测题,大家可以用这些java迭代器自测题测试一下自己目前的水平以及确认是否要更进一步的加强java迭代器的知识的学习。
1、假设e是用于某个数据结构的枚举。编写一个循环,用e打印出数据结构的所有值。
答:典型的代码如下:
2、假设i是用于某个数据结构的选代器。编写一个循环,用i打印出数据结构的所有值。
答:典型的代码如下:
3、假设v是一个整数向量。编写一个循环,可以使用迭代器打印出偶数值。
答:在这种情况下,必须确认已经采用强制转换的方式将Iterator变量的值赋值给一个整型变量,这是很重要的:
4、可以采用一定的顺序写下从1到15的整数,使得每一对相邻整数的和组成一个完美的正方形。编写一个循环,只在迭代器g所产生的相邻整数值之和组成完美正方形时,打印出Perfect(不需要验证数值的个数和范围)。
答:代码采用了布尔型值以及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迭代器的内容。