首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带java逻辑操作的双数组到布尔数组

带java逻辑操作的双数组到布尔数组
EN

Stack Overflow用户
提问于 2017-09-07 12:51:12
回答 4查看 519关注 0票数 1

我要在java中做一个操作,如果不执行for循环,我就无法找到绕过它的方法,为了提高计算效率,我真的很想避免这个循环。我以前用Matlab编程,它很容易实现,但在java中似乎要复杂得多。我的问题是这个..。什么是与Matlab代码等价的java:

代码语言:javascript
运行
复制
A = [1;-3;2;2;5-7;0];

A<1;

ans =

     0
     1
     0
     0
     1
     1

在java中,我在网上漫游时尝试了这种方法。

代码语言:javascript
运行
复制
Integer[] array = {-1,2,-3,4,-5,-6};

List<Integer> result = Arrays.stream(array).filter(w ->  w < 1 )
                .collect(Collectors.toList());

在本例中,result = {-1,-3,-5,-6}和但我希望有result = {1,0,1,0,1,1}

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-07 12:53:32

旧的解决方案(假设X是一些int值;而‘`intValues’表示某种类型的int或整数集合/数组):

代码语言:javascript
运行
复制
List<Boolean> lessThanX = new ArrayList<>();
for (int i : intValues) {
  lessThanX.add( i < X );
}

如今,使用溪流:

代码语言:javascript
运行
复制
intValues.stream().map( i -> i < X ).collect(Collectors.asList());

(或者类似的东西.由于这个问题包含了没有任何尝试的努力--我忽略了反复核对我的输入--这仅仅是为了激励你前进)。

票数 2
EN

Stack Overflow用户

发布于 2017-09-07 12:57:50

代码语言:javascript
运行
复制
    int[] a = {1,-3,2,2,-2,0};
    Arrays.stream(a).forEach(i -> System.out.println(i < 1 ? 1 : 0));
票数 3
EN

Stack Overflow用户

发布于 2017-09-07 13:02:29

这看起来应该是一个简单的循环函数。

代码语言:javascript
运行
复制
double[] outputArray = {1, -3, 2, 2, 5, -7, 0};
boolean[] outputArray = new boolean[inputArray.length];
for (int i = 0; i < inputArray.length; i++) {
    outputArray[i] = inputArray[i]<1;
}

这可以很容易地转换为以outputArray作为参数的方法调用,这可能最适合您的需要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46096862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档