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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

3黑马币
list集合遍历并删除含数字0-9的字符串!如题

最佳答案

查看完整内容

import java.util.ArrayList; import java.util.Iterator; public class 删除含0_9的元素 { /**写一个方法体,public void deleteNum(ArrayList list) * 要求凡是list成员中包括(0-9)的均删除. * @param args */ public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("悟空0"); al.add("q23wdada"); al.add("f23fasas"); al.add("wasdas"); al.add("ifdd"); al. ...

19 个回复

倒序浏览
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;
                                        }
                                }
                        }
                }
}
回复 使用道具 举报
题目什么意思?能否说的更清楚一些,list删除操作效率很低的
回复 使用道具 举报
...                        
回复 使用道具 举报
//此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是链表,不能自上而下删除,只能自下而上删除。
回复 使用道具 举报
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

这个思路挺好,试试去
回复 使用道具 举报
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: 底层是链表结构,查询速度慢,增删快,线程不同步
亲,你说错了哦
回复 使用道具 举报
把集合遍历一遍,取出每一个元素去匹配“d+”如果为true就删除它。
回复 使用道具 举报
Doug 中级黑马 2015-9-3 17:04:29
9#
  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:24
10#
可以用正则表达式依次遍历字符串
回复 使用道具 举报
这是一道黑马点招面试题
回复 使用道具 举报
//此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);
        }
}
回复 使用道具 举报
还是我的方法最通俗易懂:
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-1-10 21:37
还是我的方法最通俗易懂:
public class Test2 {
public static void main(String[] args) {

兄弟 你这个完全是错的 我面试就是你这么写的 结果完全没法删除所有 不信你运行看看
回复 使用道具 举报
woshiku 发表于 2015-8-30 20:03
//此List只适合String 即List list = new ArrayList();
for(int i = list.size()-1;i>=0;i--){
        if(list.ge ...

为什么是链表
回复 使用道具 举报
好答案啊
回复 使用道具 举报
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);         } }
回复 使用道具 举报
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底层不是数组的实现的吗。怎么会是链表
回复 使用道具 举报
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;


}
}
}
回复 使用道具 举报
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);
                }
*/
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马