你如何从Java中减去另一个字符数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

假设我有一个数组arrayA = [“a”,“b”,“c”,“d”,“e”,“f”]和另一个数组arrayB = [“a”,“d”, “E”]。

我想从arrayA减去arrayB得到结果= [“b”,“c”,“f”]

这是我为每个阵列设置的:

char[] arrayA = new char[7];
for(char c = 'a'; c <= 'f'; ++c) {
    arrayA[c - 'a'] = c;
}
char[] arrayB = new char[]{'a','d','e'};
提问于
用户回答回答于

原始数组很奇怪。下面是更新的代码:

假设你从一个char数组开始(当然最好从一组开始,但是哦):

char[] arrayA = new char[] {'a', 'b', 'c', 'd', 'e', 'f'};
char[] arrayB = new char[] {'a', 'd', 'e'};
Character[] objarrayA = ArrayUtils.toObject(arrayA);
Character[] objarrayB = ArrayUtils.toObject(arrayB);
Set<T> setA = new HashSet(Arrays.asList(objarrayA));
Set<T> setB = new HashSet(Arrays.asList(objarrayB));

setA.removeAll(setB);

然后,为了回到一个char数组:

Character[] result;
result = setA.toArray(result);
char[] cresult = ArrayUtils.toPrimitive(result);

我相信这会做你需要的。该Arrays.asList()操作是O(1),因此是有效的,不计算成本,所以不用担心额外的转换。

用户回答回答于

将它们转换为List并调用该removeAll方法:

Character[] array1 = ArrayUtils.toObject(arrayA);
    Character[] array2 = ArrayUtils.toObject(arrayB);       
    List<Character> list1 = new ArrayList(Arrays.asList(array1));
    List<Character> list2 = new ArrayList(Arrays.asList(array2));
    list1.removeAll(list2);`

扫码关注云+社区