代码之家  ›  专栏  ›  技术社区  ›  Ullas Hunka

将整数的arraylist转换为布尔值的arraylist

  •  0
  • Ullas Hunka  · 技术社区  · 8 年前

    我尝试的代码包含一个循环,有没有其他更快的方法可以做到这一点。

    使用的样本。

    private ArrayList<Boolean> changeThis(ArrayList<Integer> arr){
        ArrayList<Boolean> a = new ArrayList<>();
        for(int i=0 ; i < arr.size() ; i++){
            a.add(arr.get(i) == 1);
        }
        return a;
    }
    

    changeThis(arr);//arr has [1,0,1,0,0,0]
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   GhostCat    8 年前

    编辑:假设实际的 value[index] == 1 ,答案当然是:

    return incomingList.stream().map( (number) -> number == 1 ).collect(Collectors.toList());
    

    然后可以更改为使用 parallelStream() 更快 . 当然,当谈到 名单上的号码!对于小型数据集,使用 stream() 并行流() 增加 计算结果列表所需的时间。

    IntStream List<Integer> .


    指数 ,而不是 1 :

    改进的方法很多(除了措辞,因为变量名真的毫无意义)。

    问题是:为了计算条件,需要将列表槽与其 .

    所以你需要 为了循环(不知何故)。任何 基于此的解决方案需要额外的工作才能获取该信息;使用 foreach() .

        2
  •  3
  •   Morteza Jalambadani Robert Beltran    8 年前

    你可以用 :

    private ArrayList<Boolean> changeThis(ArrayList<Integer> arr){
            return arr.stream().map(e -> (e == 1) ).collect( Collectors.toCollection( ArrayList::new ) );
    }