>  기사  >  Java  >  Java 어레이 중복 제거: 다섯 가지 일반적인 방법을 시작하고 익히기

Java 어레이 중복 제거: 다섯 가지 일반적인 방법을 시작하고 익히기

PHPz
PHPz원래의
2023-12-23 15:04:111278검색

Java 어레이 중복 제거: 다섯 가지 일반적인 방법을 시작하고 익히기

초보부터 숙련까지: Java 배열 중복을 제거하는 5가지 일반적인 방법

소개: Java 개발에서 배열 작업은 가장 일반적인 작업 중 하나입니다. 어레이 중복 제거는 자주 발생하는 문제 중 하나입니다. 이 기사에서는 배열 중복 제거를 시작하는 단계부터 능숙해지는 데 도움이 되도록 Java 배열 중복 제거를 구현하는 5가지 일반적인 방법을 소개합니다.

1. 집합 컬렉션 사용
일반적인 방법은 집합 컬렉션의 특성을 사용하여 배열 중복 제거를 수행하는 것입니다. Set 컬렉션은 중복 요소를 허용하지 않는 컬렉션이므로 배열의 요소를 Set 컬렉션에 넣으면 자동으로 중복 요소가 제거됩니다.

코드 예:

import java.util.*;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用Set集合去重
        Set<Integer> set = new HashSet<>(Arrays.asList(array));
        
        // 去重后的数组
        Integer[] result = set.toArray(new Integer[0]);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}

2. 루프 순회 사용
또 다른 일반적인 방법은 루프를 사용하여 배열을 순회하고 요소가 하나씩 반복되는지 확인하고 반복되지 않는 요소를 새 배열에 넣는 것입니다.

코드 예:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 借助循环遍历去重
        Integer[] result = new Integer[array.length];
        int index = 0;
        for (Integer num : array) {
            boolean isDuplicate = false;
            for (int i = 0; i < index; i++) {
                if (num == result[i]) {
                    isDuplicate = true;
                    break;
                }
            }
            if (!isDuplicate) {
                result[index++] = num;
            }
        }
        
        // 去重后的数组
        result = Arrays.copyOf(result, index);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}

3. Stream 사용
Java 8 이후에는 컬렉션과 배열을 쉽게 처리할 수 있는 스트리밍 작업 개념이 도입되었습니다. 중복된 요소는 Stream 스트림의 independent() 메서드를 사용하여 제거할 수 있습니다.

코드 예:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用Stream流去重
        Integer[] result = Arrays.stream(array).distinct().toArray(Integer[]::new);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}

4. HashMap 사용
HashMap을 사용하여 배열 중복 제거를 수행하는 것도 일반적인 방법입니다. 배열을 탐색하고 배열 요소를 Key로 HashMap에 넣으면 중복 요소가 덮어쓰여지고 마지막으로 HashMap에서 Key가 제거됩니다.

코드 예:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用HashMap去重
        Map<Integer, Integer> map = new HashMap<>();
        for (Integer num : array) {
            map.put(num, num);
        }
        Integer[] result = map.keySet().toArray(new Integer[0]);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}

5. 재귀 사용
재귀는 배열 중복 제거를 달성하는 데 사용할 수 있는 고급 프로그래밍 기술입니다. 각 재귀는 배열의 첫 번째 요소를 다음 요소와 비교합니다. 동일한 경우 재귀가 끝날 때까지 다음 요소가 제거됩니다.

코드 예:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用递归去重
        Integer[] result = removeDuplicates(array, array.length);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
    
    public static Integer[] removeDuplicates(Integer[] array, int length) {
        if (length == 1) {
            return array;
        }
        
        if (array[0] == array[length-1]) {
            return removeDuplicates(Arrays.copyOf(array, length-1), length-1);
        } else {
            return removeDuplicates(array, length-1);
        }
    }
}

결론: 위의 다섯 가지 일반적인 방법을 통해 Java 배열 중복 제거 작업을 쉽게 구현할 수 있습니다. Set 컬렉션, 루프 순회, 스트림 흐름, HashMap 또는 재귀를 사용하든 배열 중복 제거 요구 사항을 더 잘 처리하는 데 도움이 될 수 있습니다. 이 기사가 Java 배열 중복 제거에 능숙해지는 데 도움이 되기를 바랍니다.

위 내용은 Java 어레이 중복 제거: 다섯 가지 일반적인 방법을 시작하고 익히기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.