从Java数组中删除具有重复项的值的最优雅方法是什么

aaa*_*aaa 0 java arrays algorithm loops

我正在尝试取一个数组,检查是否有任何欺骗,并删除该字母的所有实例,我目前正在尝试使用的方法非常难看

例;

In: ABBCCDE
Out: ADE
Run Code Online (Sandbox Code Playgroud)

要么

In: BCACDF
Out: BADF
Run Code Online (Sandbox Code Playgroud)

我目前正在使用两个for循环来查找dupes,将该dupe的Char []添加到OTHER数组中,然后循环使用另外两个for循环来删除我的ErrorArray中的chars.

rom*_*ius 5

这可能是一个解决方案:

public static void main(String[] args) {
    char[] arr = { 'A', 'B', 'B', 'C', 'C', 'D', 'E' };
    Set<Character> in = new HashSet<>();
    Set<Character> dupe = new HashSet<>();
    for (char c : arr) {
        if (!dupe.contains(c)) {
            if (in.contains(c)) {
                dupe.add(c);
                in.remove(c);
            } else {
                in.add(c);
            }
        }
    }
    char[] arrR = new char[in.size()];
    int i = 0;
    for (char c : in) {
        arrR[i++] = c;
    }
    for (char c : arrR) {
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)