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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

       
2.分析以下需求,并用代码实现:
        (1)定义List集合,存入多个字符串
        (2)删除集合中字符串"def"
        (3)然后利用迭代器遍历集合元素并输出
                答:参考答案
                        package com.heima.tests;
                        import java.util.ArrayList;
                        import java.util.Iterator;
                        import java.util.List;
                        public class Test02 {
                                public static void main(String[] args) {
                                        List<String> list = new ArrayList<String>();
                                        list.add("abce0fgh");
                                        list.add("ab2e0fgh");
                                        list.add("ab3e0fgh");
                                        list.add("ab5e0fgh");
                                        list.add("ab6e0fgh");
                                        list.add("ab5e0f8gh");
                                        list.add("000234ab5e0f8g9h");
                                        list.add("abc");
                                        list.add("def");
                                        list.add("ghi");
                                        //调用deleteStrFromList方法删除集合中的字符串"def"
                                        deleteStrFromList(list, "def");
                                        //利用迭代器遍历集合元素并输出
                                        Iterator<String> it = list.iterator();
                                        while(it.hasNext()) {
                                                System.out.println(it.next());
                                        }
                                        System.out.println();
                                }
                                // 删除ArrayList集合中的"abc"字符串
                                public static void deleteStrFromList(List<String> list,String delStr) {
                                        //1.获取迭代器对象,并进行遍历
                                        Iterator<String> it = list.iterator();
                                        while(it.hasNext()) {
                                                String str = it.next();
                                                //2.判断集合中的元素是否等于"abc",如果相等,就删除
                                                if(null!=delStr&&delStr.equals(str)) {
                                                        it.remove();
                                                }
                                        }
                                }
                        }

       
3.分析以下需求,并用代码实现:
        (1)定义List集合,存入多个字符串
        (2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串)
        (3)然后利用迭代器遍历集合元素并输出
                答:参考答案
                        package com.heima.tests;
                        import java.util.ArrayList;
                        import java.util.Iterator;
                        import java.util.List;
                        import java.util.regex.Matcher;
                        import java.util.regex.Pattern;
                        public class Test03 {
                                public static void main(String[] args) {
                                        ArrayList<String> list = new ArrayList<>();
                                        list.add("abce0fgh");
                                        list.add("ab2e0fgh");
                                        list.add("ab3e0fgh");
                                        list.add("ab5e0fgh");
                                        list.add("ab6e0fgh");
                                        list.add("ab5e0f8gh");
                                        list.add("000234ab5e0f8g9h");
                                        list.add("abc");
                                        list.add("def");
                                        list.add("ghi");
                                        deleteNum4(list);
                                        //利用迭代器遍历集合元素并输出
                                        Iterator<String> it = list.iterator();
                                        while(it.hasNext()) {
                                                System.out.println(it.next());
                                        }
                                        System.out.println();
                                }

                                // 利用遍历的方式判断是否包含0-9的字符串
                                private static void deleteNum1(List<String> list) {
                                        // 1.遍历集合
                                        Iterator<String> it = list.iterator();// 获取迭代器
                                        while (it.hasNext()) {// it.remove();
                                                String str = (String) it.next();// str.contains(String str)
                                                for (int i = 0; i <= 9; i++) {// 0-9的数字
                                                        // 2.判断字符串中是否包含0-9的字符串
                                                        if (str.contains(i + "")) {// 0->"0"
                                                                it.remove();
                                                                break;
                                                        }
                                                }
                                        }
                                }

                                // 利用正则表达式
                                private static void deleteNum2(List<String> list) {
                                        // 1.遍历集合
                                        Iterator<String> it = list.iterator();// 获取迭代器
                                        // 2.定义正则表达式
                                        String regex = "\\w*\\d+\\w*";
                                        while (it.hasNext()) {// it.remove();
                                                String str = it.next();// str.contains(String str)
                                                // 3.用正则去匹配
                                                if (str.matches(regex)) {
                                                        // 4.删除匹配的字符串
                                                        it.remove();
                                                }
                                        }
                                }

                                // 利用正则表达式方法2
                                private static void deleteNum3(List<String> list) {
                                        // 1.遍历集合
                                        Iterator<String> it = list.iterator();// 获取迭代器
                                        // 2.定义正则表达式
                                        String regex = "\\d+";
                                        Pattern p = Pattern.compile(regex);
                                        while (it.hasNext()) {// it.remove();
                                                String str = (String) it.next();// str.contains(String str)
                                                // 3.获取匹配器对象
                                                Matcher m = p.matcher(str);
                                                // 4.用匹配器对象去寻找
                                                if (m.find()) {
                                                        // 5.删除匹配的字符串
                                                        it.remove();
                                                }
                                        }
                                }
                                // 利用remove(int index)方法删除
                                private static void deleteNum4(List<String> list) {
                                        // 1.遍历集合
                                        for(int i = 0;i<list.size();i++) {
                                                /*if(list.get(i).matches("\\w*\\d+\\w*")) {
                                                        list.remove(i--);
                                                }*/
                                                String str = list.get(i);
                                                for (int j = 0; j <= 9; j++) {// 0-9的数字
                                                        // 2.判断字符串中是否包含0-9的字符串
                                                        if (str.contains(j + "")) {// 0->"0"
                                                                list.remove(i--);
                                                                break;
                                                        }
                                                }                       
                                        }               
                                }

                        }



import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetAndHashSet {
/*
*TreeSet集合的排序功能依赖于两种方法:1.自然排序(默认):其需要实现类(基本类)实现Comparable接口,并重写compareTo方法
*2.采用匿名内部类方式实现对比器接口,来完成排序功能;
* */
        public static void main(String[] args) {
                TreeSet<Person> ts = new TreeSet<>(new Comparator<Person>() {        //使用对比器对集合排序,有对比器时则默认不使用自然排序
                        public int compare(Person p1,Person p2) {
                                int num = p1.getAge() - p2.getAge();
                                return num == 0? p1.getName().compareTo(p2.getName()) + 1: num;        //此处+1使集合保留了相同元素
                        }
                });//创建TreeSet<Person>对象,并向其中添加元素
                ts.add(new Person("照例名",22));
                ts.add(new Person("照例名",22));
                ts.add(new Person("鸣人",32));
                ts.add(new Person("效力",2));
                ts.add(new Person("大大",12));
               
                for(Person p : ts)                                //使用增强for遍历集合ts 格式:for(数据类型 变量名 : 数组或集合对象名
                        System.out.println(p);
               
                Iterator<Person> it = ts.iterator();        //采用迭代器遍历集合
                while(it.hasNext())                                                //判断是否有下个元素
                        System.out.println(it.next() + " ");
               
                Person[] p = ts.toArray(new Person[1]);                //这是第三种遍历数组方式,数组遍历法共两种方式
                for(int i = 0;i < p.length;i++)
                        System.out.println(p[i].getName() + "..." + p[i].getAge());       
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马