黑马程序员技术交流社区
标题:
关于集合框架ArrayList的一个问题
[打印本页]
作者:
高会仁
时间:
2012-12-7 11:45
标题:
关于集合框架ArrayList的一个问题
import java.util.ArrayList;
import java.util.Iterator;
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class ArrayListTest {
/**
* @param args
*/
public static void sop(Object obj){
System.out.println(obj);
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add(new Person("a",1));
al.add(new Person("b",2));
al.add(new Person("c",3));
al.add(new Person("d",4));
Iterator<Person> it = al.iterator();
while(it.hasNext()){
sop(it.next().getName()+"----"+it.next().getAge());
}
}
复制代码
为什么打印结果是:
a----2
c----4呢?为什么不是a---1 b---2 c---3 d---4这样?
作者:
刘子义
时间:
2012-12-7 13:07
一次循环中执行了两次it.next()
作者:
马志军
时间:
2012-12-7 13:28
执行了两次it.next,第一次取到a,然后下一次取到了b对应的那个2。
改成
Person p = it.next();
sop(p.getName()+"----"+p.getAge());
就应该好了
作者:
Rancho_Gump
时间:
2012-12-7 14:28
本帖最后由 张向辉 于 2012-12-7 14:29 编辑
每执行一次it.next(); it就移到下个数据指向。
sop(it.next().getName()+"----"+it.next().getAge());其中第一个it.next()指的是new Person("a",1)的对象;第二个指的是new Person("b",2)的对象;所以此句打印的是a----2
这句如果改上 sop(it.next().getName()+"----"+it.next().getName()+"----"+it.next().getName()+"----"+it.next().getName());
打印a----b----c----d
作者:
奋斗的青春
时间:
2012-12-7 22:10
本帖最后由 吴愿涛 于 2012-12-7 22:13 编辑
package com.itheima.bbs.exercise;
import java.util.ArrayList;
import java.util.Iterator;
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class ArrayListTest {
/**
* @param args
*/
public static void sop(Object obj){
System.out.println(obj);
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add(new Person("a",1));
al.add(new Person("b",2));
al.add(new Person("c",3));
al.add(new Person("d",4));
al.add(new Person("e",5));
al.add(new Person("f",6));
Iterator<Person> it = al.iterator();
while(it.hasNext()){
Person p = it.next();
String name = p.getName();
int age = p.getAge();
sop(name+":"+age);
}
}
}
复制代码
作者:
戴进飘
时间:
2012-12-7 23:18
那当然不是你想要的答案呀!你在打印语句中写错了,你把它改成
Person p = it.next();
System.out.println((p.getName() + "----" + p.getAge()));
就行了
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("a",1));
al.add(new Person("b",2));
al.add(new Person("c",3));
al.add(new Person("d",4));
Iterator<Person> it = al.iterator();
while(it.hasNext()){
Person p = it.next();
System.out.println((p.getName() + "----" + p.getAge()));
}
}
}
复制代码
作者:
奋斗的青春
时间:
2012-12-7 23:22
吴愿涛 发表于 2012-12-7 22:10
记住!!!在循环中调用next()一次,就要hasNext()判断一次 。
作者:
高会仁
时间:
2012-12-7 23:25
谢谢各位大神。懂了{:soso_e113:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2