>  기사  >  Java  >  5가지 기본 Java 배열 중복 제거 알고리즘에 대한 자세한 설명

5가지 기본 Java 배열 중복 제거 알고리즘에 대한 자세한 설명

WBOY
WBOY원래의
2023-12-23 10:01:19832검색

5가지 기본 Java 배열 중복 제거 알고리즘에 대한 자세한 설명

5가지 클래식 Java 배열 중복 제거 알고리즘에 대한 자세한 설명

Java 프로그래밍에서는 배열 중복을 제거해야 하는 상황, 즉 배열에서 중복 요소를 제거하고 고유한 요소를 유지해야 하는 상황에 자주 직면합니다. 다음은 5가지 클래식 Java 배열 중복 제거 알고리즘을 소개하고 해당 코드 예제를 제공합니다.

  1. HashSet 사용
    HashSet은 중복 요소를 자동으로 제거하는 Java의 컬렉션 클래스입니다. 이 기능을 사용하면 배열 중복 제거를 빠르게 수행할 수 있습니다.
    코드 예:
import java.util.Arrays;
import java.util.HashSet;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        HashSet<Integer> set = new HashSet<>();
        for (int i : array) {
            set.add(i);
        }
        
        int[] result = new int[set.size()];
        int index = 0;
        for (int i : set) {
            result[index++] = i;
        }
        
        System.out.println(Arrays.toString(result));
    }
}
  1. Using TreeSet
    TreeSet은 요소를 자동으로 중복 제거하고 정렬하는 Java의 정렬된 컬렉션 클래스입니다. 배열 중복 제거는 배열의 요소를 TreeSet에 추가한 다음 TreeSet을 배열로 변환하여 수행할 수 있습니다.
    코드 예:
import java.util.Arrays;
import java.util.TreeSet;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        TreeSet<Integer> set = new TreeSet<>();
        for (int i : array) {
            set.add(i);
        }
        
        Integer[] result = set.toArray(new Integer[0]);
        int[] deduplicatedArray = Arrays.stream(result).mapToInt(Integer::intValue).toArray();
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
  1. Stream API 사용
    Java 8 이상에 도입된 Stream API는 배열 중복 제거 작업을 단순화할 수 있습니다. 배열을 스트림으로 변환하면 스트림의 고유한 메서드를 사용하여 중복 요소를 제거한 다음 배열로 변환합니다.
    코드 예:
import java.util.Arrays;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        int[] deduplicatedArray = Arrays.stream(array).distinct().toArray();
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
  1. 이중 루프 사용
    이중 루프는 인접한 요소를 비교하여 중복 요소를 지정된 잘못된 값으로 설정한 다음 잘못된 값을 제거하는 일반적인 배열 중복 제거 알고리즘입니다.
    코드 예:
import java.util.Arrays;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] != Integer.MIN_VALUE) {
                for (int j = i + 1; j < array.length; j++) {
                    if (array[i] == array[j]) {
                        array[j] = Integer.MIN_VALUE;
                    }
                }
            }
        }
        
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] != Integer.MIN_VALUE) {
                array[count++] = array[i];
            }
        }
        
        int[] deduplicatedArray = Arrays.copyOf(array, count);
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
  1. HashMap 사용
    HashMap은 Java의 해시 테이블 구조입니다. 배열 요소는 HashMap의 put 메소드를 사용하여 키로 삽입됩니다. 키가 이미 존재하는 경우 중복된 요소는 자동으로 제거됩니다.
    코드 예:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        Map<Integer, Object> map = new HashMap<>();
        for (int i : array) {
            map.put(i, null);
        }
        
        int[] deduplicatedArray = new int[map.size()];
        int index = 0;
        for (int i : map.keySet()) {
            deduplicatedArray[index++] = i;
        }
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}

위는 5가지 클래식 Java 배열 중복 제거 알고리즘에 대한 자세한 소개와 코드 예입니다. 실제 애플리케이션에서는 특정 상황에 따라 적절한 중복 제거 알고리즘을 선택하면 프로그램의 성능과 가독성을 향상시킬 수 있습니다.

위 내용은 5가지 기본 Java 배열 중복 제거 알고리즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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