首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较两个数组并从原始Array java中删除重复项(没有列表)

比较两个数组并从原始Array java中删除重复项(没有列表)
EN

Stack Overflow用户
提问于 2016-11-26 21:13:16
回答 4查看 4.3K关注 0票数 1

因此,我试图比较两个字符数组,而keyW中存在的所有字母都应该从数组invAlphabet中删除。我已经能够在invAlphabet数组中找到重复的元素,但是,我不知道如何在不使用列表或集合的情况下删除重复的元素,而我不应该使用.有什么想法吗?

代码语言:javascript
复制
public static void main(String[] args)
{
    final int SIZE = 26;
    char[] keyW = {'A', 'L','O'};

    char[] invAlphabet = new char [SIZE];


    for (int i = 0; i < SIZE; i++)
    {
        invAlphabet[i] = (char)('Z' - i);

    }



    for (int i = 0; i<keyW.length; i++)
    {
        for (int j = 0; j < invAlphabet.length; j++)
        {
            if(keyW[i] == invAlphabet[j])
            {
                //need to delete the invAlphabet[j] elements that are duplicates
                System.out.println(invAlphabet[j]);
                System.out.println(j);
                break;

            }

        }
    }

}
EN

Stack Overflow用户

发布于 2016-11-26 21:21:23

我首先编写一个方法来搜索给定的char[] (即contains方法),例如

代码语言:javascript
复制
private static boolean contains(char[] chars, char ch) {
    for (char c : chars) {
        if (c == ch) {
            return true;
        }
    }
    return false;
}

然后将问题分解为两个步骤。首先,计数重复项,然后通过不复制复制来构建输出数组。有点像

代码语言:javascript
复制
int dupes = 0;
for (char ch : invAlphabet) {
    if (contains(keyW, ch)) {
        dupes++;
    }
}
int i = 0;
char[] noDupes = new char[invAlphabet.length - dupes];
for (char ch : invAlphabet) {
    if (!contains(keyW, ch)) {
        noDupes[i] = ch;
        i++;
    }
} 

Alternatively,您可以将keyW数组转换为String。而且,在Java 8+中,您可以构造一个字符的Stream。映射到数组,对String进行筛选,然后收集到另一个String。就像,

代码语言:javascript
复制
String keyWord = new String(keyW);
char[] noDupes = IntStream.range(0, invAlphabet.length)
        .mapToObj(x -> invAlphabet[x])
        .filter(ch -> (keyWord.indexOf(ch) < 0))
        .map(String::valueOf)
        .collect(Collectors.joining()).toCharArray();
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40823210

复制
相关文章

相似问题

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