黑马程序员技术交流社区
标题:
list 问题
[打印本页]
作者:
刘圣伟
时间:
2012-8-15 11:46
标题:
list 问题
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add("java01");
a1.add("java02");
a1.add("java03");
a1.add(1,"java0081");
/*Iterator it = a1.iterator();
while(it.hasNext()){
p(it.next());
} */
ListIterator li = a1.listIterator();
while(li.hasNext()){
Object obj = li.next();
if(obj.equals("java02"))
//在后边添加一个元素。
li.add("java008");
//修改元素;
//li.set("java077");
}
复制代码
为什么 a1.add(1,"java0081") 添加在java02的前面,
li。add添加在java02 的后边呢
作者:
王冰
时间:
2012-8-15 11:55
那是因为al.add(1,"java0081")是在下标为1的位置添加java0081,故java002和后面的元素都向后挪一位;
而add方法是在查询到的元素的后面添加
作者:
李菁
时间:
2012-8-15 11:58
a1.add(1,"java0081")是在集合的第二个位置插入java0081.所以插在java02的前面。
只有元素等于java02时,才往li里添加java008,所以在java02后面
作者:
张忠豹
时间:
2012-8-15 12:16
import java.util.ArrayList;
import java.util.ListIterator;
public class TestList {
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add("java01");
a1.add("java02");
a1.add("java03");
//为什么 a1.add(1,"java0081") 添加在java02的前面?因为你在这里面设定了“java0081”所存放的位置,角标为1
//API中是这么定义的void add(int index, E element) 将指定的元素插入此列表中的指定位置。
a1.add(1, "java0081");
ListIterator li = a1.listIterator();
while (li.hasNext()) {
Object obj = li.next();
if (obj.equals("java02"))
// 在后边添加一个元素。
//add添加在java02 的后边呢 ?
//在ListIterator的add方法中是这么定义的:void add(E e)将指定的元素插入列表(可选操作)。
//该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);
//如果列表没有元素,那么新元素就成为列表中的唯一元素。
//这个时候光标指向“java02”的后面,自然添加在”java02“的后面
li.add("java008");
}
//Iterator it = a1.iterator();
java.util.Iterator it = a1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
作者:
杨健yj
时间:
2012-8-15 12:48
板凳兄:
为什么 a1.add(1,"java0081") 添加在java02的前面?因为你在这里面设定了“java0081”所存放的位置,角标为1
API中是这么定义的void add(int index, E element) 将指定的元素插入此列表中的指定位置。
在后边添加一个元素。
add添加在java02 的后边呢 ?
在ListIterator的add方法中是这么定义的:void add(E e)将指定的元素插入列表(可选操作)。
该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);
如果列表没有元素,那么新元素就成为列表中的唯一元素。
板凳兄说的已经恨透彻了,我想再说一点,迭代器之所以这样设计是因为在迭代的过程中如果有新元素,我们也可以加入
并且在接下来的迭代过程中,我们还可以对其进行打印。就如人家说的那样:在ListIterator的add方法中是这么定义的:void add(E e)将指定的元素插入列表(可选操作)。
该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2