use*_*466 2 java collections iterator
import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
public class lesson {
static void printAll(ArrayList<String> names, int len)
{
Iterator it = names.iterator();
while( it.hasNext() )
{
if( ((String)it.next()).length() == len)
System.out.println( it.next() );
}
}
public static void main(String[] args) throws IOException {
ArrayList<String> names = new ArrayList<String>();
names.add("Jan");
names.add("Ivan");
names.add("Tom");
names.add("George");
printAll(names,3);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么输出Ivan,George,不应该只打印长度为3的名字(Jan和Tom)?
if( ((String)it.next()).length() == len)
System.out.println( it.next() );
}
Run Code Online (Sandbox Code Playgroud)
it.next()将迭代器推进到一个元素.你做了it.next()两次.
if( ((String)it.next()).length() == len) 前进一次,现在迭代器指向next()
将其更改为以下内容:
it.next() prints next() element in iterator.
{
//Get once.
String nextName = (String)it.next();
if( nextName .length() == len)
System.out.println(nextName );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |