如何从另一个数组的条件自动设置数组值?

时间:2016-06-05 08:52:59

标签: java arrays algorithm function

假设我有数组A:     A = {1,2,3,4,5,6,7,8,9}

然后我用扫描仪将我的偏好输入到另一个数组,假设B,然后B有值:     B = {1,2,6,8,9}

现在问题是,我有另一个数组(C),有没有一种方法,所以当数组B设置时,数组C自动具有值:     C = {3,4,5,7}

哪个C的值是B不选择的A的其余部分。我正在使用Java语言。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

以下是我在python中解决同样问题的代码。 import numpy a = numpy.array([1,2,3,4,5]) # declare array b = numpy.array([1,2,3]) # declare array c = set(a) - set(b)

输出: - c = [4,5]

答案 1 :(得分:1)

使用TreeSet在Java中标准化集合操作。

Set<Integer> a = new TreeSet<Integer>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9}));
Set<Integer> b = new TreeSet<Integer>(Arrays.asList(new Integer[]{1, 2, 6, 8, 9}));

//union
Set<Integer> c = new TreeSet<Integer>(a);
c.addAll(b);
System.out.println(c);

//intersection
Set<Integer> d = new TreeSet<Integer>(a);
d.retainAll(b);
System.out.println(d);

//difference
Set<Integer> e = new TreeSet<Integer>(a);
e.removeAll(b);
System.out.println(e);

//reverse
List<Integer> list = new ArrayList<Integer>(a);
java.util.Collections.reverse(list);
System.out.println(list);

Source

答案 2 :(得分:1)

好的,这很简单。假设你有这些数组

private final int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
private int[] b; // I didn't set b to any value
private Integer[] c; // REMEMBER to set it yourself or you will have a null pointer

现在我们创建一个设置b的方法:

private void setB(int[] newB) {
    this.b = newB;
}

现在每次设置B的值......

b = someMethodThatGetsUserInput();

您不应该使用上述内容,而是致电:

setB(someMethodThatGetsUserInput());

为什么呢?因为我们会在setB中编写一些更改C的代码。所以每次设置B的值时,C也会改变。

让我们看看我们如何编写代码来改变C,这样它就是A所拥有但B却没有的元素。

直截了当的方式是:

ArrayList<Integer> list = new ArrayList<>();
for (int i : a) {
    if (!b.contains(a)) {
        list.add(i);
    }
}

c = list.toArray(new Integer[0]);

容易!

还有其他方法,比如像其他人提到的那样使用套装。但我认为,作为初学者,你应该首先学习最直接,最低效的方法。

  

过早优化是万恶之源