黑马程序员技术交流社区

标题: 随机生成字符串集合,用迭代器遍历,并把指定内容删除 [打印本页]

作者: JohnChan    时间: 2016-5-30 22:25
标题: 随机生成字符串集合,用迭代器遍历,并把指定内容删除
一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素
  1. package com.java.collection;

  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. import java.util.ListIterator;
  6. import java.util.Random;


  7. public class StringMath {

  8.         //1.一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。
  9.         public static void main(String[] args) {
  10.                 ArrayList list = new ArrayList();
  11.                
  12.                 for (int i = 0; i < 100; i++) {
  13.                         list.add(StringNum(3));                       
  14.                 }
  15.                 for (int i = 1; i < 5; i++) {
  16.                         Random rand = new Random();
  17.                         int number = rand.nextInt(100);
  18.                         list.set(number, "abc");
  19.                         System.out.print(number+" ");
  20.                 }
  21.                 ListIterator lit = list.listIterator();
  22.                 while (lit.hasNext()) {
  23.                         String str = (String)lit.next();
  24.                         if ("abc".equals(str)) {
  25.                                 //lit.remove();
  26.                                 //System.out.println(list.indexOf("abc"));
  27.                                
  28.                         }
  29.                 }
  30.                 System.out.println(list);
  31.         }

  32.         public static String StringNum(int length) {
  33.        
  34.                 String az = "adbefcghijklmnopqrstuvxyz";
  35.                 Random rand = new Random();
  36.                 StringBuffer sb = new StringBuffer();
  37.                 for (int i = 0; i < length; i++) {
  38.                         int number = rand.nextInt(az.length());
  39.                         sb.append(az.charAt(number));
  40.                 }       
  41.                 return sb.toString();
  42.                        
  43.         }
  44. }
复制代码




作者: kunwenli    时间: 2016-6-2 00:06
这个怎么理解啊,注释啊
作者: JohnChan    时间: 2016-6-2 22:05
kunwenli 发表于 2016-6-2 00:06
这个怎么理解啊,注释啊

额,这个好难吗?我以为超级简单,大家都一眼就能看懂,所以把注释省了。好吧,我把注释加上吧
  1. package com.java.collection;

  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. import java.util.ListIterator;
  6. import java.util.Random;


  7. public class StringMath {

  8.         //1.一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。
  9.         public static void main(String[] args) {  
  10.                 ArrayList list = new ArrayList();        //声明一个list集合
  11.                
  12.                 for (int i = 0; i < 1000; i++) {        //for循环,往集合里添加1000个元素
  13.                         list.add(StringNum(3));                        //添加集合元素,StringNum为生成随机元素方法
  14.                 }
  15.                 //为了确实随机生成的元素里有一部分值为“abc”,所有添加多个for循环,随机替换一些元素为abc
  16.                 for (int i = 1; i < 5; i++) {               
  17.                         Random rand = new Random();                       
  18.                         int number = rand.nextInt(1000);        //生成大于0小于1000的随机
  19.                         list.set(number, "abc");                        //以生成的随机数为索引,替换指定位置上的元素为abc
  20.                         System.out.print(number+" ");               
  21.                 }
  22.                 ListIterator lit = list.listIterator();        //list的迭代器
  23.                 while (lit.hasNext()) {                                        //遍历
  24.                         String str = (String)lit.next();       
  25.                         if ("abc".equals(str)) {                        //对比该元素是否位置abc
  26.                                 lit.remove();                                        //如果是则删除
  27.                                 //System.out.println(list.indexOf("abc"));
  28.                                
  29.                         }
  30.                 }
  31.                 System.out.println(list);                                //打印出list集合
  32.         }

  33.         //生成随机元素发方法
  34.         public static String StringNum(int length) {                        //leng为要生成随机元素的长度,比如abc则长度为3
  35.        
  36.                 String az = "adbefcghijklmnopqrstuvxyz1234567890";        //声明一个String 类型的字符串为源值
  37.                 Random rand = new Random();                                               
  38.                 StringBuffer sb = new StringBuffer();                                //声明StringBuffer
  39.                 for (int i = 0; i < length; i++) {                                       
  40.                         int number = rand.nextInt(az.length());                        //以源值长度为随机范围,生成随机数
  41.                         sb.append(az.charAt(number));                                        //抽取出源值上随机数的字符,并添加到sb中,比如如果上面算的随机数为3,则抽出的值为e,把e添加到sb中
  42.                 }       
  43.                 return sb.toString();                                                                //返回sb的String值
  44.                        
  45.         }
复制代码




作者: kunwenli    时间: 2016-6-2 22:47
JohnChan 发表于 2016-6-2 22:05
额,这个好难吗?我以为超级简单,大家都一眼就能看懂,所以把注释省了。好吧,我把注释加上吧

好好好好  定好好看看




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