A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘旭波 中级黑马   /  2015-11-14 08:57  /  1099 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天看集合教学视频,自己就敲了一遍老师讲的习题,可是发现最后的输出结果跟老师讲的不同,麻烦帮忙看看代码问题在哪里 输出结果是

6 个回复

倒序浏览
楼主,你打印的是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. }
复制代码



回复 使用道具 举报
yqlbd 发表于 2015-11-14 10:57
楼主,你打印的是obj,不是修改后的集合,当然不是你想要的数据。

试试下面的代码

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

16行 已定义泛型,就不需要强转啦
回复 使用道具 举报
yqlbd 发表于 2015-11-14 11:19
16行 已定义泛型,就不需要强转啦

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

修改了,将while中的sop()拿到外面 改成sop(al)就对了,谢谢
回复 使用道具 举报
要转成String
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马