Java 将整数数组列表转换为布尔数组列表

Java 将整数数组列表转换为布尔数组列表,java,arraylist,Java,Arraylist,我有一个包含整数的arraylist,希望将其转换为布尔值的arraylist 我尝试过的代码包含一个循环,是否有其他更快的方法可以实现同样的效果 使用的样本 private ArrayList<Boolean> changeThis(ArrayList<Integer> arr){ ArrayList<Boolean> a = new ArrayList<>(); for(int i=0 ; i < arr.size() ;

我有一个包含整数的arraylist,希望将其转换为布尔值的arraylist

我尝试过的代码包含一个循环,是否有其他更快的方法可以实现同样的效果

使用的样本

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;
}

编辑:考虑到实际值是
值[index]==1
,答案当然是:

return incomingList.stream().map( (number) -> number == 1 ).collect(Collectors.toList());
然后可以将其更改为使用
parallelStream()
,以更快地获得结果。当然,当谈到列表中的大量数字时,并行解决方案只是减少总体运行时间!对于小型数据集,使用
stream()
parallelStream()
很可能会增加计算结果列表所需的时间

另一个问题是:这些数字实际上来自哪里?也许有机会使用
IntStream
而不是
List


为了完整性,初始答案基于我们需要与索引进行比较的假设,而不是
1

事实上,这是一种无法改进的情况(除了措辞,因为变量名实际上毫无意义)

问题是:为了计算条件,您需要将列表槽与其索引进行比较

因此,您需要循环计数(不知何故)。任何基于
stream();使用
foreach()
时相同


所以,长话短说:坚持“老派”的迭代方式

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

return incomingList.stream().map( (number) -> number == 1 ).collect(Collectors.toList());
然后可以将其更改为使用
parallelStream()
,以更快地获得结果。当然,当谈到列表中的大量数字时,并行解决方案只是减少总体运行时间!对于小型数据集,使用
stream()
parallelStream()
很可能会增加计算结果列表所需的时间

另一个问题是:这些数字实际上来自哪里?也许有机会使用
IntStream
而不是
List


为了完整性,初始答案基于我们需要与索引进行比较的假设,而不是
1

事实上,这是一种无法改进的情况(除了措辞,因为变量名实际上毫无意义)

问题是:为了计算条件,您需要将列表槽与其索引进行比较

因此,您需要循环计数(不知何故)。任何基于
stream();使用
foreach()
时相同


所以,长话短说:坚持“老派”的迭代方式

您可以使用

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

您可以使用

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

您是否尝试过强制转换?听起来可能很有趣,但这可能会破解它。@Ullas Hunka您是否在寻找性能或代码量方面更快的方法?如果您有大量对象要迭代,请尝试线程安全并行流以提高性能。这里有一个关于如何做到这一点的链接。您是否尝试过强制转换?听起来可能很有趣,但这可能会破解它。@Ullas Hunka您是否在寻找性能或代码量方面更快的方法?如果您有大量对象要迭代,请尝试线程安全并行流以提高性能。这里有一个关于如何做到这一点的链接。对不起,我没有得到那个评论?对不起,我没有得到那个评论?