正向遍历与逆向遍历小案例

正向逆向遍历

案例需求:
删除集合中所有s的元素;
分析:
1:遍历集合,获取集合中的每一个元素,然后判断这个元素是不是以s开头,如果是则删除它;
(如果不是,则继续遍历下一个元素)
2: 利用字符串的 startsWith可以判断是否是s;

package it.heima;

import java.util.ArrayList;
public class ZhengNibianli {

    

        public static void main(String[] args) {
            //1:创建集合并添加元素
            ArrayList list = new ArrayList<>();
            list.add("super");
            list.add("sunny");
            list.add("supper");
            list.add("tiger");
            list.add("lion");
            list.add("monkey");
            list.add("should");
            list.add("zebra");
            //快捷键   ctrl+alt+m   可以将选中的代码提取成一个方法
            //fs1(list);
            fs2(list);
        }

        //第e二种方式,    逆向遍历,找到元素后,直接删除即可(不需要考虑索引补位的问题)
        public static void fs2(ArrayList list) {
            //逆向遍历
            for (int i = list.size()-1; i >=0 ; i--) {
                String s = list.get(i);
                //判断这个元素是不是以s开头
                if(s.startsWith("s")){
                    list.remove(i);//根据索引删除它
                }
            }
            System.out.println("集合中还剩余的是2:"+list);

        }

        //第一种方式,    正向遍历,每一次删除元素后,都要i--
        public static void fs1(ArrayList list) {
            //2:遍历集合,获取集合中的每一个元素,然后判断这个元素是不是以s开头
            // ,如果是则删除它;(如果不是,则继续遍历下一个元素)
            for (int i = 0; i < list.size(); i++) {
                String s = list.get(i);
                //判断这个元素是不是以s开头
                if(s.startsWith("s")){
                    list.remove(i);//根据索引删除它
                    i--;
                    // 原因是集合的长度是可以变化的,当删除上一个元素的时候,
                    // 下一个元素会自动向前补位,所以我们需要将索引也向前补位
                }
            }
            System.out.println("集合中还剩余的是1:"+list);
        }
    }

你可能感兴趣的:(正向遍历与逆向遍历小案例)