我要在java中做一个操作,如果不执行for循环,我就无法找到绕过它的方法,为了提高计算效率,我真的很想避免这个循环。我以前用Matlab编程,它很容易实现,但在java中似乎要复杂得多。我的问题是这个..。什么是与Matlab代码等价的java:
A = [1;-3;2;2;5-7;0];
A<1;
ans =
0
1
0
0
1
1在java中,我在网上漫游时尝试了这种方法。
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}
发布于 2017-09-07 12:53:32
旧的解决方案(假设X是一些int值;而‘`intValues’表示某种类型的int或整数集合/数组):
List<Boolean> lessThanX = new ArrayList<>();
for (int i : intValues) {
lessThanX.add( i < X );
}如今,使用溪流:
intValues.stream().map( i -> i < X ).collect(Collectors.asList());(或者类似的东西.由于这个问题包含了没有任何尝试的努力--我忽略了反复核对我的输入--这仅仅是为了激励你前进)。
发布于 2017-09-07 12:57:50
int[] a = {1,-3,2,2,-2,0};
Arrays.stream(a).forEach(i -> System.out.println(i < 1 ? 1 : 0));发布于 2017-09-07 13:02:29
这看起来应该是一个简单的循环函数。
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作为参数的方法调用,这可能最适合您的需要。
https://stackoverflow.com/questions/46096862
复制相似问题