我有一个在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}
答案 0 :(得分:3)
int[] a = {1,-3,2,2,-2,0};
Arrays.stream(a).forEach(i -> System.out.println(i < 1 ? 1 : 0));
答案 1 :(得分:2)
旧学校解决方案(假设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());
(或类似的东西......因为问题包含了尝试自己的努力 - 我省略了交叉检查我的输入 - 它仅仅是为了让你前进的灵感)
答案 2 :(得分:1)
这看起来应该是一个简单的循环函数。
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
作为参数的方法调用,这可能最适合您的需求。
答案 3 :(得分:0)
public static int[] convertToBinary(int[] decimal, int compareInt){
int[] binary = new int[decimal.length];
int index = 0;
Arrays.stream(decimal).forEach( dec -> binary[index++] = dec < compareInt ? 1 : 0 );
return binary;
}