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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//一个ArrayList对象aList中存有若干个字符串元素,
//现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
class No2
{
public static void main(String[] args)
{
  ArrayList<String> aList=new ArrayList<String>();//创建了一个aList容器
  Collections.addAll(aList,"abcdf","abc","abc","hjjk","hhjje");//向容器里添加元素
  for(Iterator<String> iter=aList.iterator();iter.hasNext();)//遍历容器里的元素
  {
   String str=iter.next();
   
   if(str.equals("abc"))//当容器里的元素和abc的值相同时,利用迭代器自带的remove()方法删除该元素
    iter.remove();
    //str=null;//为什么我这么写,最后出来的还是有abc呢
   
  }
  for(String str1: aList)//遍历修改后的容器
  {
   System.out.println(str1);
  }
  
  
}
}

6 个回复

倒序浏览
字符串str  的值定义后不可改变,str是指向堆内存地址位置的
str = null;只是改变了指向,并没有改变原值,差不多就这意思。。。
回复 使用道具 举报
这么说吧:
有一个类
class A {
    int a;
}
令外一个地方
A a1 = new A();
a1.a = 1;
A aTest = a1;
aTest = null;
现在的a1.a是多少,当然是1了,怎么可以是空呢。
回复 使用道具 举报
集合判断里面是否有包含的元素是用的 contains 这个方法,有就返回true ,没有就是false
回复 使用道具 举报
上面写错 不好意思  ,我好像看到过别人是这样写的,"abc".equals(it.next())
回复 使用道具 举报
把equals改成contains就好
回复 使用道具 举报
刚刚调了下,你代码没问题啊,这题我是这样写的
  1. ArrayList<String> strings = new ArrayList<String>();
  2.                 strings.add("accd");
  3.                 strings.add("abc");
  4.                 strings.add("ttd");
  5.                 strings.add("abcc");
  6.                 strings.add("abc");
  7.                 strings.add("xx");

  8.                 for (int i = 0; i < strings.size(); i++) {
  9.                         if ("abc".equals(strings.get(i))) {
  10.                                 strings.remove(i);
  11.                         }
  12.                 }
  13.                 for (String string : strings) {
  14.                         System.out.println(string);
  15.                 }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马