朋友,希望我的回答可以帮到你.一会你再测试一下试一试.不明白的我们再交流.加油吧.我是新手,多多关照.
程序执行到if ("360周鸿祎".equals(s.getName()));的时候,与new Student(24, "360周鸿祎")中的"360周鸿祎"进行比较,比较返回true,进入if{}
执行list.add(2, new Student(30, "Tecent马化腾"));这是会在list集合索引为2的位置最上元素,此时list集合的长度会增加,for()循环进入下一次循环;
关键是list集合的末尾一直是new Student(24, "360周鸿祎"),故if ("360周鸿祎".equals(s.getName()))依然成立,又在list里面加上new Student(30, "Tecent马化腾");
相当于程序进入了死循环了;我的答案如下:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo
{
public static void main(String[] args)
{
List list = new ArrayList();
list.add(new Student(21, "阿里巴巴马云"));
list.add(new Student(22, "百度李彦宏"));
list.add(new Student(23, "搜狐张朝阳"));
list.add(new Student(24, "360周鸿祎"));
int size = list.size();//在此现将list长度取出固定就好
for (int i = 0; i <size; i++)//size大小固定,不会进入下次循环
{
Student s = (Student) list.get(i);
if ("360周鸿祎".equals(s.getName()))
{
list.add(2, new Student(30, "Tecent马化腾"));
list.set(3, new Student(31, "Tecent"));
}
System.out.println("学生姓名:"+s.getName()+" ; 学生年龄:"+s.getAge());
}
}
} |