黑马程序员技术交流社区

标题: list集合遍历并删除含数字0-9的字符串 [打印本页]

作者: 不安静的丑男子    时间: 2015-8-30 17:55
标题: list集合遍历并删除含数字0-9的字符串
list集合遍历并删除含数字0-9的字符串!如题

作者: zhuhuihui    时间: 2015-8-30 17:55
import java.util.ArrayList;
import java.util.Iterator;

public class 删除含0_9的元素 {

        /**写一个方法体,public void deleteNum(ArrayList<String> list)
         * 要求凡是list成员中包括(0-9)的均删除.
         * @param args

         */
       
        public static void main(String[] args) {
               
                ArrayList<String> al = new ArrayList<String>();
                        al.add("悟空0");
                         al.add("q23wdada");
                        al.add("f23fasas");
                        al.add("wasdas");
                        al.add("ifdd");
                        al.add("lfsdf");
                        al.add("1232sfsd");
                        al.add("4fsdfds");
                        al.add("3fsdfs");
                        al.add("2sdffs");
                        // 删除含0-9的元素
                        /*System.out.println("删除前集合中的元素:");
                        for (String x : al) {
                                System.out.println(x);
                        }*/
                        System.out.println("删除后集合中的元素:");
                                deleteNum(al);
               
                        // 打印删除后的集合
                        for (String string : al) {
                                System.out.println(string);

                        }
                }

                public static void deleteNum(ArrayList<String> list) {
                       
                        Iterator<String> it = list.iterator();
                                while (it.hasNext()) {
                                String ss = it.next();
                       
                               
                       
                                for (Integer x = 0; x < 10; x++) {
                                        String s = x.toString();
                                        if (ss.contains(s)) {//如果该元素包含0-9,删除该元素
                                               
                                        it.remove();
                                                break;
                                        }
                                }
                        }
                }
}
作者: Ci功    时间: 2015-8-30 19:00
题目什么意思?能否说的更清楚一些,list删除操作效率很低的
作者: liuch111    时间: 2015-8-30 19:16
...                        
作者: woshiku    时间: 2015-8-30 20:03
//此List只适合String 即List<String> list = new ArrayList<String>();
for(int i = list.size()-1;i>=0;i--){
        if(list.get(i).contains("0123456789")){
                list.remove(i);
        }
}
楼主可以试试,因为ArrayList是链表,不能自上而下删除,只能自下而上删除。
作者: MilesMatheson    时间: 2015-8-30 23:40
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

这个思路挺好,试试去
作者: 纸心丶醉月    时间: 2015-8-31 22:49
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

ArrayList: 底层是数组结构,查询速度快,增删慢,线程不同步
  LinkedList: 底层是链表结构,查询速度慢,增删快,线程不同步
亲,你说错了哦
作者: 荣斌    时间: 2015-9-1 00:56
把集合遍历一遍,取出每一个元素去匹配“d+”如果为true就删除它。
作者: Doug    时间: 2015-9-3 17:04
  1.                 ArrayList<String> list = new ArrayList<String>();
  2.                 list.add("悟空0");
  3.                 list.add("q23wdada");
  4.                 list.add("f23fasas");
  5.                 list.add("wasdas");
  6.                 list.add("ifdd");
  7.                 list.add("lfsdf");
  8.                 list.add("1232sfsd");
  9.                 list.add("4fsdfds");
  10.                 list.add("3fsdfs");
  11.                 list.add("2sdffs");

  12.                 int len = list.size();
  13.                 for (int i = 0; i < len; i++) {
  14.                         int index = len - 1 - i;
  15.                         String value = list.get(index);
  16.                         if (value.matches("\\b.*\\d+.*\\b")) {
  17.                                 System.out.println(list.remove(index));
  18.                         }
  19.                 }

  20.                 System.out.println("===========");
  21.                 for (String str : list) {
  22.                         System.out.println(str);
  23.                 }
复制代码

作者: heima_huang    时间: 2015-9-4 20:39
可以用正则表达式依次遍历字符串
作者: cemabenteng    时间: 2015-9-5 21:30
这是一道黑马点招面试题
作者: wu199309023    时间: 2015-9-8 22:53
//此List只适合String 即List<String> list = new ArrayList<String>();
for(int i = list.size()-1;i>=0;i--){
        if(list.get(i).contains("0123456789")){
                list.remove(i);
        }
}
作者: 彭觉得    时间: 2016-1-10 21:37
还是我的方法最通俗易懂:
public class Test2 {
public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<String>();
        list.add("abc");
        list.add("123");
        list.add("f123wda");
        list.add("293019");
        deleteNum(list);
        for(String string:list){
                System.out.println(string);
        }
}
public static void deleteNum(ArrayList<String> list){
for(int i=0;i<list.size();i++){
         String str = list.get(i);
         for(Integer j=0;j<=10;j++){
                 if(str.contains(j.toString())){
                         list.remove(i);
                 }
         }
         
}
}
}
作者: 落星追恒    时间: 2016-4-2 16:37
彭觉得 发表于 2016-1-10 21:37
还是我的方法最通俗易懂:
public class Test2 {
public static void main(String[] args) {

兄弟 你这个完全是错的 我面试就是你这么写的 结果完全没法删除所有 不信你运行看看
作者: dangyongping    时间: 2016-5-4 23:27
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

为什么是链表
作者: cuiwx705    时间: 2016-7-26 23:12
好答案啊
作者: 李宇飞    时间: 2016-8-2 00:27
public class Test02 {         public static void main(String[] args) {                 //建立存储数据的list集合                 ArrayList<String> list=new ArrayList<>();                 //添加数据                 list.add("sdhfkh0afs");                 list.add("1asdf3");                 list.add("fdasfads");                 //写出符合匹配的正则表达式                 String regex="\\w*[0-9]\\w*";                 //获取迭代器对象                 Iterator<String> it = list.iterator();                 while(it.hasNext()){                         if(it.next().matches(regex)){                                 it.remove();                         }                 }                 System.out.println(list);         } }
作者: 海哥程序猿    时间: 2016-9-15 14:38
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

ArrayList底层不是数组的实现的吗。怎么会是链表
作者: 消失的字符    时间: 2017-10-17 14:39
ArrayList<String> strList = new ArrayList<String>();
                        strList.add("aaa");
                        strList.add("ccc99");
                        strList.add("cccer99");
                        strList.add("ccccsd99");
                        strList.add("ccasad99");
                        strList.add("9cads2sa23dsa");
                        strList.add("ccc32csd99");
                        strList.add("cc1asad99");
                        strList.add("cad3a23dsa");
                       for(int i=0;i<strList.size();i++){
                        char[] ch=strList.get(i).toChararray();
                           for(int j=0;j<ch.length;j++){
                            if(ch[j]>='0'&&ch[j]<='9'){
                           strList.remove(i);
                                 i--;
                            break;


}
}
}

作者: 公子小白1127    时间: 2018-4-18 12:11
public static void main(String[] args) {
                List<String> list = new ArrayList<String>();
                list.add("list10");
                list.add("hello121");
                list.add("java");
                list.add("javahello");
                list.add("java你好");
                //用迭代器遍历符合条件的集合元素
                ListIterator<String> lit =list.listIterator();
                while(lit.hasNext()){
                        String str = lit.next();
                        for (Integer j = 0; j <= 10; j++) {
                                if (str.contains(j.toString())) {
                                        lit.remove();
                                        break;
                                }
                        }                       
                }
                System.out.println(list);
                //普通方法
                /*
                 * for (int i = 0; i < list.size(); i++) { String s=list.get(i); for(int
                 * j=0;j<s.length();j++){ char ch =s.charAt(j); if(ch>='0' && ch<='9'){
                 * list.remove(i); i--; break; } } }
                 */
/*
                for (int i = 0; i < list.size(); i++) {
                        String s = list.get(i);
                        for (Integer j = 0; j <= 10; j++) {
                                if (s.contains(j.toString())) {
                                        list.remove(i);
                                        i--;
                                        break;
                                }
                        }
                }
                for (String str : list) {
                        System.out.println(str);
                }
*/
        }




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