English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 흐름 제어

Java 배열

Java 대상 지향(I)

Java 대상 지향(II)

Java 대상 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 알고리즘(알고리즘)

이 튜토리얼에서는 Java集合框架이 제공하는 다양한 알고리즘을 예제를 통해 배웁니다.

Java集合框架은 다양한 알고리즘을 제공하여 데이터 구조에 저장된 요소를 처리할 수 있습니다.

Java의 알고리즘은 정적 메서드이며, 집합에 다양한操作을 수행할 수 있습니다.

알고리즘이 다양한 집합에 사용될 수 있으므로, "일반 알고리즘

우리는 콜렉션 프레임워크에서 사용할 수 있는 다양한 메서드의 구현을 확인해 보겠습니다.

1.sort() 사용

sort() 콜렉션 프레임워크가 제공하는 메서드는 요소를 정렬하는 데 사용됩니다. 예를 들어

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        //배열리스트 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        //요소 추가
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("정렬되지 않은ArrayList: " + numbers);
        // sort() 메서드 사용
        Collections.sort(numbers);
        System.out.println("정렬된ArrayList: " + numbers);
    }
}

출력 결과

정렬되지 않은ArrayList: [4, 2, 3]
정렬된ArrayList: [2, 3, 4]

여기서는 자연 순서(오름차순)로 정렬됩니다. 하지만 Comparator 인터페이스를 사용하여 sort() 메서드의 정렬 순서를自定义할 수 있습니다.

자세한 정보를 얻으려면 방문하십시오Java 정렬

2.shuffle를 사용하여 섞기

Java Collections框架의 shuffle() 메서드는 데이터 구조 내에서出现的任何 순서를 섞습니다. 이는 정렬과 반대입니다. 예를 들어

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        //배열리스트 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        //요소 추가
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("정렬된ArrayList: " + numbers);
        //shuffle() 메서드 사용
        Collections.shuffle(numbers);
        System.out.println("shuffle를 사용하는ArrayList: " + numbers);
    }
}

출력 결과

정렬된 ArrayList: [1, 2, 3]
shuffle를 사용하는 ArrayList: [2, 1, 3]

프로그램을 실행할 때 shuffle() 메서드는 무작위 출력을 반환합니다.

셔플 알고리즘은 무작위 출력이 필요한 게임에서 주로 사용됩니다.

3.일반 데이터 처리

Java에서는, 데이터 처리를 위한 다양한 메서드를 제공하는 콜렉션 프레임워크가 있습니다.

  • reverse() - 요소의 순서를 반전

  • fill() - 지정된 값으로 집합 내 모든 요소를 대체

  • copy() - 지정된 원본에서 목적지로 요소 복사

  • swap() - 집합 내 두 요소의 위치를 교환

  • addAll() - 모든 요소를 다른 집합에 추가

예를 들어,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //ArrayList 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);
        // 사용reverse()
        Collections.reverse(numbers);
        System.out.println("반전ArrayList1: " + numbers);
        // 사용swap()
        Collections.swap(numbers, 0, 1);
        System.out.println("ArrayList1 사용swap():" + numbers);
        ArrayList<Integer> newNumbers = new ArrayList<>();
        // 사용addAll
        newNumbers.addAll(numbers);
        System.out.println("ArrayList2 addAll()를 사용하여 " + newNumbers);
        // fill()를 사용하여
        Collections.fill(numbers, 0);
        System.out.println("ArrayList1 fill()를 사용하여 " + numbers);
        // copy()를 사용하여
        Collections.copy(newNumbers, numbers);
        System.out.println("ArrayList2 copy()를 사용하여 " + newNumbers);
    }
}

출력 결과

ArrayList1: [1, 2]
ArrayList을 반전1: [2, 1]
ArrayList1 swap()를 사용하여: [1, 2]
ArrayList2 addALl()를 사용하여: [1, 2]
ArrayList1 fill()를 사용하여: [0, 0]
ArrayList2 copy()를 사용하여: [0, 0]

주의:copy() 메서드를 실행할 때 두 개의 목록의 크기는 같아야 합니다。

4.binarySearch()를 사용하여 검색

Java集合框架의 binarySearch() 메서드는 지정된 요소를 검색합니다. 그것은 요소가 지정된 집합에서의 위치를 반환합니다. 예를 들어,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //ArrayList 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // binarySearch()를 사용하여
        int pos = Collections.binarySearch(numbers, 3);
        System.out.println("3의 위치는 " + pos);
    }
}

출력 결과

3의 위치는 2

주의:binarySearch() 메서드를 실행하기 전에 집합을 정렬해야 합니다。

자세한 정보를 얻으려면 방문하십시오Java 이진 탐색

5.결합

  • frequency() - 집합에서 요소가 존재하는 횟수를 카운트합니다

  • disjoint() - 두 개의 집합이 공통 요소를 가지고 있는지 확인합니다

예를 들어,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //ArrayList 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);
        int count = Collections.frequency(numbers, 2);
        System.out.println("Count of 2: " + count);
        ArrayList<Integer> newNumbers = new ArrayList<>();
        newNumbers.add(5);
        newNumbers.add(6);
        System.out.println("ArrayList2: " + newNumbers);
        boolean value = Collections.disjoint(numbers, newNumbers);
        System.out.println("두 개의 목록은 교집합이 없습니까? " + value);
    }
}

출력 결과

ArrayList1: [1, 2, 3, 2]
Count of 2: 2
ArrayList2: [5, 6]
두 개의 목록은 교집합이 없습니까? true

6최대와 최소 요소를 찾기 위해 사용됩니다

Java集合框架의 min()와 max() 메서드는 최소와 최대 요소를 찾는 데 사용됩니다. 예를 들어,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //ArrayList 생성
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // min() 사용
        int min = Collections.min(numbers);
        System.out.println("최소 요소: " ); + min);
        // max() 사용
        int max = Collections.max(numbers);
        System.out.println("최대 요소: " ); + max);
    }
}

출력 결과

최소 요소: 1
최대 요소: 3