자바 배열 중복값 체크 - jaba baeyeol jungboggabs chekeu

이 게시물은 Java에서 어레이의 중복을 확인하는 방법에 대해 설명합니다.

1. 나이브 솔루션

순진한 해결책은 모든 어레이 요소가 중첩된 for 루프를 사용하지 않고 반복되는지 확인하는 것입니다. 이 솔루션의 시간 복잡도는 O(n2).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 어레이에서 중복을 확인하는 일반 메서드

privatestatic<T>boolean checkForDuplicates(T...array)

{

    // 모든 어레이 요소에 대해 어레이에서 나중에 발견되는지 확인합니다.

    for(inti=0;i<array.length;i++)

    {

        for(intj =i+1;j< array.length;j++)

        {

            if(array[i]!=null&& array[i].equals(array[j])){

                returntrue;

            }

        }

    }

    // 중복이 발견되지 않음

    return false;

}

다운로드  코드 실행

2. 사용 HashSet

우리는 사용함으로써 더 나은 성과를 낼 수 있습니다 해싱. 아이디어는 주어진 어레이을 순회하고 발견된 각 요소를 HashSet. 이제 발견된 요소가 이미 세트에 있었다면 중복입니다. 이 솔루션의 시간 복잡도는 O(n) 그러나 사용된 보조 공간은 O(n).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

// 어레이에서 중복을 확인하는 일반 메서드

privatestatic<T>boolean checkForDuplicates(T...array)

{

    // 빈 세트 생성

    Set<T>set=newHashSet<T>();

    // 모든 어레이 요소에 대해 수행

    for(Te:array)

    {

        // 중복이 발견되면 true를 반환

        if(set.contains(e)){

            returntrue;

        }

        // 현재 요소를 집합에 삽입

        if(e!=null){

            set.add(e);

        }

    }

    // 중복이 발견되지 않음

    returnfalse;

}

다운로드  코드 실행

우리는 그것을 알고 HashSet 중복 값을 허용하지 않습니다. 이 속성을 사용하여 어레이에서 중복 항목을 확인할 수 있습니다. 아이디어는 모든 어레이 요소를 HashSet. 이제 어레이의 길이가 집합의 크기와 같지 않으면 어레이에 중복 항목이 포함됩니다.

// 어레이에서 중복을 확인하는 일반 메서드

privatestatic<T>boolean checkForDuplicates(T...array)

{

    Set<T>set=newHashSet<>(Arrays.asList(array));

    return array.length!=set.size();

}

다운로드  코드 실행

3. 정렬 사용

아이디어는 어레이을 자연 또는 역순으로 어레이하는 것입니다. 이제 어레이을 탐색하고 인접한 요소를 비교합니다. 인접한 요소가 동일한 것으로 확인되면 어레이에 중복 항목이 포함되어 있다고 말할 수 있습니다. 이 솔루션의 시간 복잡도는 O(n.log(n)).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

// 어레이에서 중복을 확인하는 일반 메서드

privatestatic<T>boolean checkForDuplicates(T...array)

{

    // 어레이을 자연순 또는 역순으로 어레이

    Arrays.sort(array);

    // prev는 어레이의 현재 요소에 대한 이전 요소를 저장합니다.

    Tprev=null;

    // 모든 어레이 요소에 대해 수행

    for(Te:array)

    {

        // 두 개의 연속 요소가 동일한 것으로 확인되면

        // 중복 발견

        if(e !=null&& e.equals(prev)){

            returntrue;

        }

        // 현재 요소를 이전으로 설정

        prev=e;

    }

    // 중복이 발견되지 않음

    returnfalse;

}

다운로드  코드 실행

4. Java 8 사용하기

Java 8에서는 스트림을 사용하여 어레이에 있는 고유한 요소를 계산할 수 있습니다. 고유 개수가 어레이의 길이와 같지 않으면 어레이에 중복 항목이 포함됩니다.

// 어레이에서 중복을 확인하는 일반 메서드

privatestatic<T>boolean checkForDuplicates(T...array)

{

    LongdistinctCount= Stream.of(array).distinct().count();

    return array.length!=distinctCount;

}

다운로드  코드 실행

이것이 Java의 어레이에서 중복을 확인하는 것입니다.

읽어 주셔서 감사합니다.

우리의 온라인 컴파일러 C, C++, Java, Python, JavaScript, C#, PHP 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.

우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 :)