double数组到boolean数组,在java中使用逻辑运算

时间:2017-09-07 12:51:12

标签: java arrays type-conversion logical-operators

我有一个在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}

4 个答案:

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