黑马程序员技术交流社区

标题: ArrayList集合添加,修改元素 [打印本页]

作者: 刘旭波    时间: 2015-11-14 08:57
标题: ArrayList集合添加,修改元素
昨天看集合教学视频,自己就敲了一遍老师讲的习题,可是发现最后的输出结果跟老师讲的不同,麻烦帮忙看看代码问题在哪里 输出结果是


作者: yqlbd    时间: 2015-11-14 10:57
楼主,你打印的是obj,不是修改后的集合,当然不是你想要的数据。

试试下面的代码
  1. import java.util.*;

  2. class TestArrayList_2
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<String> al = new ArrayList<String>();

  7.                 al.add("abc001");
  8.                 al.add("abc002");
  9.                 al.add("abc003");
  10.                 al.add("abc004");

  11.                 System.out.println(al);

  12.                 ListIterator<String> lit = al.listIterator();

  13.                 while(lit.hasNext()){
  14.             String temp = lit.next();
  15.                         if(temp.equals("abc001")){
  16.                                 lit.set("abc005");
  17.                         }
  18.                 }

  19.                 System.out.println(al);
  20.                
  21.         }
  22. }
复制代码




作者: 一个人的朝圣    时间: 2015-11-14 11:09
yqlbd 发表于 2015-11-14 10:57
楼主,你打印的是obj,不是修改后的集合,当然不是你想要的数据。

试试下面的代码

第19行 String temp = lit.next(); 少了个强制转换 ,已经子类引用指向父类对象了,需要强制转换,不然会报错的
String temp = (String)lit.next(); 不谢
作者: yqlbd    时间: 2015-11-14 11:19
一个人的朝圣 发表于 2015-11-14 11:09
第19行 String temp = lit.next(); 少了个强制转换 ,已经子类引用指向父类对象了,需要强制转换,不然会报 ...

16行 已定义泛型,就不需要强转啦
作者: 一个人的朝圣    时间: 2015-11-14 11:24
yqlbd 发表于 2015-11-14 11:19
16行 已定义泛型,就不需要强转啦

哦  抱歉了 我们还没学习泛型
作者: 刘旭波    时间: 2015-11-14 12:05
一个人的朝圣 发表于 2015-11-14 11:09
第19行 String temp = lit.next(); 少了个强制转换 ,已经子类引用指向父类对象了,需要强制转换,不然会报 ...

修改了,将while中的sop()拿到外面 改成sop(al)就对了,谢谢
作者: 黑夜中那颗星    时间: 2015-11-14 13:26
要转成String




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2