关于循环遍历的不同写法 它们使用的场景区别是什么?

普通for循环(下标、迭代器、增强for循环),
Foreach,
filter,
map,
some,
every,

Arraylist一般用for,linkedlist用另外foreach或itroter


public static void main(String[] args) {
    /** for Foreach, filter, map, some, every, */
    List<UserResp> list = new ArrayList<>();
    list.add(new UserResp());
    // java8新特性:对集合中的属性做某些操作,可以直接用Foreach,代码更简洁
    list.forEach(u -> u.setEnable(1));

    // fori对集合操作
    for (int i = 0; i < list.size(); i++) {
      UserResp userResp = list.get(i);
      userResp.setEnable(1);
    }

    // for是fori的增强型,代码比fori更简洁
    for (UserResp userResp : list) {
      userResp.setEnable(1);
    }

    // 需要使用集合中特定下标的元素时使用fori
    for (int i = 0; i < list.size(); i++) {
      if (i == 3) {
        UserResp userResp = list.get(i);
        // TODO: 2022/1/29 a
      }
    }

    // java8新特性 stream流,过滤出集合中的某个字段可以使用map
    List<String> idList = list.stream().map(UserResp::getId).collect(Collectors.toList());

    // java8新特性 stream流,过滤出指定条件的数据,此处过滤出名字为xiaoming的用户
    List<UserResp> xList =
        list.stream()
            .filter(u -> Objects.equals(u.getName(), "xiaoming"))
            .collect(Collectors.toList());

    // some, every 为ES5中的方法, 数组some()方法/every(),一般是前端对数组的操作方法
  }

ES5 数组some()方法/every()
ES5 数组some()方法
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。

数组中还有一个every()方法,写法和some()函数一样,功能也是对数组中的每一项进行判断,是否满足参数函数的条件,如果所有的都满足,则返回true,如果有一项不满足,就停止循环,返回false。

循环只有for,foreach,while,do while
其他那些根本不是循环,是过滤器
你把循环和过滤器也混为一谈,说明对基本语法还是理解的很浅薄
不接触实际项目,空谈语法和函数,终究是纸上谈兵
你多接触一些实际的开发,慢慢就摸索出来哪种用法更实用了
条条大路通罗马,很多功能用各种方式都能实现,但是写出来的代码量差别巨大
如果你经常写一大堆循环来实现一个类库里已经实现了的功能,那么当然的可读性和可维护性都变得非常差