Java 将整数数组列表转换为布尔数组列表
我有一个包含整数的arraylist,希望将其转换为布尔值的arraylist 我尝试过的代码包含一个循环,是否有其他更快的方法可以实现同样的效果 使用的样本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() ;
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您是否在寻找性能或代码量方面更快的方法?如果您有大量对象要迭代,请尝试线程安全并行流以提高性能。这里有一个关于如何做到这一点的链接。对不起,我没有得到那个评论?对不起,我没有得到那个评论?