最快的阵列比较

时间:2010-11-05 17:19:24

标签: java arrays data-structures comparison

我有两个独特值的排序数组(可以是ArrayLists,Collections或任何其他数据格式)。比较它们的最快方法是什么?目标是删除两个列表中存在的所有值。

开始于:

int [] a = {1, 2, 3, 4, 5};
int [] b = {1, 2, 3, 6, 7};

结束于:

a = {4, 5}
b = {6, 7}

2 个答案:

答案 0 :(得分:9)

MergeSort

中使用合并步骤的修改版本
  • 获取每个数组的迭代器
  • 比较迭代器的值
  • 如果相等,则增加
  • 如果不相等,则将较小的值放入唯一值数组中,并仅增加迭代器
  • 重复直到满足数组结束
  • 如果在其他数组中有任何剩余,那些是唯一的

答案 1 :(得分:1)

List list = Arrays.asList(a);

list.retainAll(b); //now list has {1, 2, 3}

List result = Arrays.asList(a).removeAll(list); //it now has 4, 5. For b do the same