首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中,如何从一个字符数组中减去另一个字符数组?

在Java中,如何从一个字符数组中减去另一个字符数组?
EN

Stack Overflow用户
提问于 2013-06-25 20:44:17
回答 6查看 10.3K关注 0票数 15

假设我有一个数组,arrayA = "a","b","c","d","e","f",另一个数组,arrayB = "a","d","e“。

我想从arrayA中减去arrayB,得到结果= "b","c","f“

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

代码语言:javascript
复制
char[] arrayA = new char[7];
for(char c = 'a'; c <= 'f'; ++c) {
    arrayA[c - 'a'] = c;
}
char[] arrayB = new char[]{'a','d','e'};

(请原谅对符号和语法的不当使用,我是Ruby新手,只是想从Oracle教程中学习Java。谢谢!)编辑:一个单词和引号

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-06-25 20:47:25

简短的答案是将数组转换为“集合”,然后对它们使用集合操作。我现在正在寻找合适的代码,但你可以先看看这篇文章:Classical set operations for java.util.Collection

编辑: Luke657提出了一个很好的观点。原始数组很奇怪。下面是更新后的代码:

假设您从一个char数组开始(当然,从一个set开始会更好,但是哦,好吧):

代码语言:javascript
复制
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数组:

代码语言:javascript
复制
Character[] result;
result = setA.toArray(result);
char[] cresult = ArrayUtils.toPrimitive(result);

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

票数 24
EN

Stack Overflow用户

发布于 2013-06-25 20:48:21

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

代码语言:javascript
复制
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);`
票数 12
EN

Stack Overflow用户

发布于 2013-06-25 20:47:28

我建议您从arrayA构造一个Set,然后使用第二个数组对其调用removeAll

如果按照问题中所示对两个数组进行排序,则可以通过对数组进行一次迭代来解决问题。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17297698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档