黑马程序员技术交流社区

标题: 遍历ArrayList对象,删除其中所有值为"abc"的字符串元素。一点疑问~ [打印本页]

作者: Troy123    时间: 2014-8-11 16:50
标题: 遍历ArrayList对象,删除其中所有值为"abc"的字符串元素。一点疑问~
  1. import java.util.*;
  2. public class Test1 {
  3.         public static void main(String[] args){
  4.                 ArrayList<String> aList = new ArrayList<String>();
  5.                 aList.add("abc");
  6.                 aList.add("afawef");
  7.                 aList.add("abc");
  8.                 //获取迭代器
  9.                 Iterator<String> it = aList.iterator();
  10.                 System.out.println(aList.toString());
  11.                 //用迭代器的hasNext方法遍历
  12.                 while(it.hasNext()){
  13.                                 //把it.next()地址指向String对象
  14.                         String str = it.next();
  15.                                 //判断str的值是否与“abc”相同
  16.                         if(str.equals("abc")){
  17.                                 //若为true,将"abc"的引用从集合中删除
  18.                                 it.remove();
  19.                         }
  20.                 }
  21.                 System.out.println(aList.toString());
  22.         }
  23. }
复制代码

我觉得题目的意思是(“abcdefg”) 输出defg啊。如果是这样应该怎么弄呢~
作者: 想做开发    时间: 2014-8-11 16:55
迭代器与几何方法不是不能同时用
作者: 长跑※终点    时间: 2014-8-11 17:26
你这样应该会报错的吧。 it.remove();这句
作者: Bule丶    时间: 2014-8-11 17:26
不是,删除所有只要有abc内容的数据
作者: J.twt    时间: 2014-8-11 17:47
#在这里快速回复#delete(int start,int end)你值得拥有
作者: mr.yang    时间: 2014-8-11 18:06
  1. public class Test1 {
  2.         public static void main(String[] args) {
  3.                
  4.                 List<String> aList = new ArrayList<String>();
  5.                 //向aList添加字符串
  6.                 aList.add("aaa");
  7.                 aList.add("aba");
  8.                 aList.add("aca");
  9.                 aList.add("abc");
  10.                
  11.                
  12.                 //方法一,用for循环的方式,判断集合中的元素是不是等于abc,如果不是就加入到新建的集合中,最后返回新建的集合
  13.                 List<String> list = removeStr1(aList,"abc");
  14.                 System.out.println(list);
  15.                
  16.                 //方法二,List有一个特殊的迭代器借口(listIterator()),这个接口的特点是
  17.                 //迭代期间可以删除List中的元素
  18.                 removeStr2(aList,"abc");
  19.                 System.out.println(aList);
  20.         }

  21. //方法一      -----------------------------------------------------------------------       
  22.         private static List<String> removeStr1(List<String> aList,String str) {
  23.                 //用多态的形式创建一个String类型的ArrayList的对象list,来存储不是"abc"的字符串
  24.                 List<String> list = new ArrayList<String>();
  25.                 //用for循环遍历整个集合,如果不等于传进来的字符串str,则添加到新的数组list中
  26.                 for (int i = 0; i < aList.size(); i++) {
  27.                         //判断是不是等于传进来的字符串str
  28.                         if(!(aList.get(i).equals(str))){
  29.                                 //向list中添加元素
  30.                                 list.add(aList.get(i));
  31.                         }
  32.                 }
  33.                 return list;
  34.         }
  35.        
  36. //方法二     -----------------------------------------------------------------------               
  37.         private static void removeStr2(List<String> aList,String str) {
  38.                 // TODO Auto-generated method stub
  39.                 //创建一个List集合特有的迭代器(迭代期间可以删除List中的元素)
  40.                 Iterator<String> it = aList.listIterator();
  41.                 while(it.hasNext()){
  42.                         if(it.next().equals(str)){
  43.                                 //如果等于传进来的str,就列表中删除
  44.                                 it.remove();
  45.                         }
  46.                 }
  47.         }
  48.        
  49. }
复制代码



作者: 雨来    时间: 2015-12-24 21:22
toArray  subString  toString()   再转换成集合可以吗?




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