两个排序数组之间的差异

时间:2018-04-01 00:44:41

标签: java

我试图创建一个能够打印两组数字之间差异的方法

在这种情况下,我想区别(h1 - h2)或换句话说,打印数组h1中不在h2中的所有元素。

到目前为止,这是我提出的,只有当第一组h1的数量小于第二组h2的数量时,它才有效,但我想让它在任何给定的集合下工作。< / p>

我真的会想到你可能有的任何想法,谢谢¡

private void metodoDifference(int[] h1, int[] h2, int m, int n) {
        int i = 0, j = 0;
        ArrayList<Integer> arrayDifference = new ArrayList<>();
        while (i < m && j < n) {

            if(h1[i] < h2[j]) {
                arrayDifference .add(h1[j++]);
                i++;}
            else if (h2[j] < h1[i]){
                arrayDifference .add(h1[j++]);     
            }
            else   {
                i++;
                j++;
            }     
            }
            differenceText.setText(arrayDifference .toString());
        }

1 个答案:

答案 0 :(得分:1)

您似乎不需要mn。我会用ArrayList.removeAll(Collection)。然后,假设您使用的是Java 8+,则可以一步收集并装箱int[](s)。像,

private void metodoDifference(int[] h1, int[] h2) {
    List<Integer> arrayDifference = Arrays.stream(h1).boxed().collect(Collectors.toList());
    arrayDifference.removeAll(Arrays.stream(h2).boxed().collect(Collectors.toList()));
    differenceText.setText(arrayDifference.toString());
}