黑马程序员技术交流社区
标题:
迭代里有句话不理解。。。
[打印本页]
作者:
皮卫凯
时间:
2012-9-19 16:04
标题:
迭代里有句话不理解。。。
本帖最后由 皮卫凯 于 2012-9-19 16:28 编辑
class ArrayListTest
{ public static void sop(Object obj)
{ System.out.println(obj); }
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
sop(al);
al = singleElement(al); //调用下面的方法
sop(al);
}
public static ArrayList singleElement(
ArrayList al
)
{
//定义一个临时容器。
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next(); //这句话怎么理解?一般迭代器都是遍历打印。
if(!newAl.contains(obj)) //如果newA1不包含该元素 就添加到newA1中。
newAl.add(obj);
}
return newAl;
}
}
也可以这样写:
if(!newAl.contains(it.next())
newAl.add(it.next());
作者:
王自强
时间:
2012-9-19 16:24
public static ArrayList singleElement(ArrayList al)
{
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();//第7行。
//楼主知道it.next()返回的是元素的值吧,用obj把这个值记住,方便对其进行操作。
//如果不用obj把这个值记住,那么代码如下
/*
if(!newAl.contains(it.next())//第11行。这样就再次调用了it.next()方法,这个it.next()返回的元素,
与第7行中的it.next()返回的元素是不一样,第11行调用的it.next()方法返回的 是第7行中的方法返回元素的下一个元素!
newAl.add(it.next());返回值是第11行方法返回值的下一个元素。
*/
//所以在第7行中把元素的值记住,这样方便对其进行操作。
if(!newAl.contains(obj)) //操作的是第7行方法返回的元素。
newAl.add(obj);//操作的是第7行方法返回的元素
}
return newAl;
}
复制代码
作者:
赵永康
时间:
2012-9-19 16:42
Object obj = it.next(); //这句话怎么理解?一般迭代器都是遍历打印。??
it.next(); 是用迭代器取出集合中的元素,因为你对你的集合没有加泛型,所以不知道集合里面存贮的具体元素类型,所以就用Object这个所有类的父类记住。假如你加入了泛型,就可以直接写具体的类型了 也不用强转的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2