산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 트리셋

자바 트리셋

이 자습서에서는 예제를 통해 Java TreeSet 클래스와 다양한 작업 및 메서드에 대해 알아봅니다.

TreeSet Java 컬렉션 프레임워크의 클래스는 트리 데이터 구조의 기능을 제공합니다.

NavigableSet 인터페이스를 확장합니다.

<시간>

TreeSet 만들기

트리 세트를 생성하려면 java.util.TreeSet를 가져와야 합니다. 먼저 포장하십시오.

패키지를 가져오면 다음은 TreeSet을 만드는 방법입니다. 자바로.


TreeSet<Integer> numbers = new TreeSet<>();

여기에서 TreeSet를 만들었습니다. 아무 주장 없이. 이 경우 TreeSet의 요소는 자연스럽게 정렬됩니다(오름차순).

그러나 Comparator을 사용하여 요소 정렬을 사용자 정의할 수 있습니다. 상호 작용. 이 튜토리얼의 뒷부분에서 이에 대해 알아볼 것입니다.

<시간>

TreeSet의 메소드

TreeSet 클래스는 집합에서 다양한 작업을 수행할 수 있는 다양한 메서드를 제공합니다.

<시간>

TreeSet에 요소 삽입

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {

        TreeSet<Integer> evenNumbers = new TreeSet<>();

        // Using the add() method
        evenNumbers.add(2);
        evenNumbers.add(4);
        evenNumbers.add(6);
        System.out.println("TreeSet: " + evenNumbers);

        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(1);

        // Using the addAll() method
        numbers.addAll(evenNumbers);
        System.out.println("New TreeSet: " + numbers);
    }
}

출력

TreeSet: [2, 4, 6]
New TreeSet: [1, 2, 4, 6]
<시간>

TreeSet 요소에 액세스

트리 세트의 요소에 액세스하려면 iterator()를 사용할 수 있습니다. 방법. 이 방법을 사용하려면 java.util.Iterator을 가져와야 합니다. 패키지. 예를 들어,

import java.util.TreeSet;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Calling iterator() method
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("TreeSet using Iterator: ");
        // Accessing elements
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

출력

TreeSet: [2, 5, 6]
TreeSet using Iterator: 2, 5, 6,
<시간>

요소 제거

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using the remove() method
        boolean value1 = numbers.remove(5);
        System.out.println("Is 5 removed? " + value1);

        // Using the removeAll() method
        boolean value2 = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + value2);
    }
}

출력

TreeSet: [2, 5, 6]
Is 5 removed? true
Are all elements removed? true
<시간>

TreeSet 이후 클래스는 NavigableSet을 구현합니다. , 트리 세트의 요소를 탐색하는 다양한 방법을 제공합니다.

1. first() 및 last() 메서드

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using the first() method
        int first = numbers.first();
        System.out.println("First Number: " + first);

        // Using the last() method
        int last = numbers.last();
        System.out.println("Last Number: " + last);
    }
}

출력

TreeSet: [2, 5, 6]
First Number: 2
Last Number: 6
<시간>

2. 천장(), 바닥(), 더 높은() 및 더 낮은() 메서드

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(4);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using higher()
        System.out.println("Using higher: " + numbers.higher(4));

        // Using lower()
        System.out.println("Using lower: " + numbers.lower(4));

        // Using ceiling()
        System.out.println("Using ceiling: " + numbers.ceiling(4));

        // Using floor()
        System.out.println("Using floor: " + numbers.floor(3));

    }
}

출력

TreeSet: [2, 4, 5, 6]
Using higher: 5
Using lower: 2
Using ceiling: 4
Using floor: 2
<시간>

3. pollfirst() 및 pollLast() 메서드

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(4);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using pollFirst()
        System.out.println("Removed First Element: " + numbers.pollFirst());

        // Using pollLast()
        System.out.println("Removed Last Element: " + numbers.pollLast());

        System.out.println("New TreeSet: " + numbers);
    }
}

출력

TreeSet: [2, 4, 5, 6]
Removed First Element: 2
Removed Last Element: 6
New TreeSet: [4, 5]
<시간>

4. headSet(), tailSet() 및 subSet() 메서드

<시간>

headSet(요소, 부울 값)

headSet() 메소드는 지정된 요소 이전의 트리 세트의 모든 요소를 ​​리턴합니다. (인수로 전달됨).

부울 값 매개변수는 선택 사항입니다. 기본값은 false입니다. .

true인 경우 booleanValue로 전달됩니다. , 메서드는 지정된 요소를 포함하여 지정된 요소 이전의 모든 요소를 ​​반환합니다.

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(4);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using headSet() with default boolean value
        System.out.println("Using headSet without boolean value: " + numbers.headSet(5));

        // Using headSet() with specified boolean value
        System.out.println("Using headSet with boolean value: " + numbers.headSet(5, true));
    }
}

출력

TreeSet: [2, 4, 5, 6]
Using headSet without boolean value: [2, 4]
Using headSet with boolean value: [2, 4, 5]
<시간>

tailSet(요소, 부울 값)

tailSet() 메소드는 지정된 요소 뒤에 있는 트리 세트의 모든 요소를 ​​리턴합니다. (매개변수로 전달) 지정된 요소 포함 .

부울 값 매개변수는 선택 사항입니다. 기본값은 true입니다. .

false인 경우 booleanValue로 전달됩니다. , 메서드는 지정된 요소 이후의 모든 요소를 ​​반환합니다. 지정된 요소를 포함하지 않고 .

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(4);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using tailSet() with default boolean value
        System.out.println("Using tailSet without boolean value: " + numbers.tailSet(4));

        // Using tailSet() with specified boolean value
        System.out.println("Using tailSet with boolean value: " + numbers.tailSet(4, false));
    }
}

출력

TreeSet: [2, 4, 5, 6]
Using tailSet without boolean value: [4, 5, 6]
Using tailSet with boolean value: [5, 6]
<시간>

하위 집합(e1, bv1, e2, bv2)

subSet() 메소드는 e1 사이의 모든 요소를 ​​반환합니다. 및 e2 e1 포함 .

bv1bv2 선택적 매개변수입니다. bv1의 기본값 true입니다. , 기본값 bv2 false입니다. .

false인 경우 bv1로 전달됩니다. , 메서드는 e1 사이의 모든 요소를 ​​반환합니다. 및 e2 e1을 포함하지 않음 .

true인 경우 bv2로 전달됩니다. , 메서드는 e1 사이의 모든 요소를 ​​반환합니다. 및 e2 , e1 포함 .

예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(4);
        numbers.add(6);
        System.out.println("TreeSet: " + numbers);

        // Using subSet() with default boolean value
        System.out.println("Using subSet without boolean value: " + numbers.subSet(4, 6));

        // Using subSet() with specified boolean value
        System.out.println("Using subSet with boolean value: " + numbers.subSet(4, false, 6, true));
    }
}

출력

TreeSet: [2, 4, 5, 6]
Using subSet without boolean value: [4, 5]
Using subSet with boolean value: [5, 6]
<시간>

설정 작업

TreeSet의 메소드 다양한 집합 작업을 수행하는 데 사용할 수도 있습니다.

<시간>

집합 조합

두 집합 간의 합집합을 수행하기 위해 addAll()을 사용합니다. 방법. 예를 들어,

import java.util.TreeSet;;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> evenNumbers = new TreeSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("TreeSet1: " + evenNumbers);

        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("TreeSet2: " + numbers);

        // Union of two sets
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);

    }
}

출력

TreeSet1: [2, 4]
TreeSet2: [1, 2, 3]
Union is: [1, 2, 3, 4]
<시간>

집합의 교차점

두 세트 사이의 교집합을 수행하기 위해 retainAll()을 사용합니다. 방법. 예를 들어,

import java.util.TreeSet;;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> evenNumbers = new TreeSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("TreeSet1: " + evenNumbers);

        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("TreeSet2: " + numbers);

        // Intersection of two sets
        numbers.retainAll(evenNumbers);
        System.out.println("Intersection is: " + numbers);
    }
}

출력

TreeSet1: [2, 4]
TreeSet2: [1, 2, 3]
Intersection is: [2]
<시간>

세트의 차이

두 세트의 차이를 계산하기 위해 removeAll()을 사용할 수 있습니다. 방법. 예를 들어,

import java.util.TreeSet;;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> evenNumbers = new TreeSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("TreeSet1: " + evenNumbers);

        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("TreeSet2: " + numbers);

        // Difference between two sets
        numbers.removeAll(evenNumbers);
        System.out.println("Difference is: " + numbers);
    }
}

출력

TreeSet1: [2, 4]
TreeSet2: [1, 2, 3, 4]
Difference is: [1, 3]
<시간>

집합의 부분집합

집합이 다른 집합의 하위 집합인지 확인하려면 containsAll()을 사용합니다. 방법. 예를 들어,

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> numbers = new TreeSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("TreeSet1: " + numbers);

        TreeSet<Integer> primeNumbers = new TreeSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("TreeSet2: " + primeNumbers);

        // Check if primeNumbers is subset of numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("Is TreeSet2 subset of TreeSet1? " + result);
    }
}

출력

TreeSet1: [1, 2, 3, 4]
TreeSet2: [2, 3]
Is TreeSet2 subset of TreeSet1? True
<시간>

TreeSet의 다른 방법

메소드 설명
clone() TreeSet의 복사본을 만듭니다.
contains() 트리셋에서 지정된 요소를 검색하고 부울 결과를 반환합니다.
isEmpty() TreeSet인지 확인합니다. 비어 있습니다
size() TreeSet의 크기를 반환합니다.
clear() TreeSet에서 모든 요소를 ​​제거합니다.

자세한 내용은 Java TreeSet(공식 Java 설명서)를 참조하십시오.

<시간>

TreeSet 대. 해시셋

TreeSet HashSet 뿐만 아니라 Set 구현 상호 작용. 그러나 그들 사이에는 몇 가지 차이점이 있습니다.

<시간>

TreeSet 비교기

위의 모든 예에서 트리 세트 요소는 자연스럽게 정렬됩니다. 그러나 요소의 순서를 사용자 지정할 수도 있습니다.

이를 위해 우리는 트리 세트의 어떤 요소가 정렬되었는지를 기반으로 자체 비교기 클래스를 생성해야 합니다. 예를 들어,

import java.util.TreeSet;
import java.util.Comparator;

class Main {
    public static void main(String[] args) {

        // Creating a tree set with customized comparator
        TreeSet<String> animals = new TreeSet<>(new CustomComparator());

        animals.add("Dog");
        animals.add("Zebra");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("TreeSet: " + animals);
    }

    // Creating a comparator class
    public static class CustomComparator implements Comparator<String> {

        @Override
        public int compare(String animal1, String animal2) {
            int value =  animal1.compareTo(animal2);

            // elements are sorted in reverse order
            if (value > 0) {
                return -1;
            }
            else if (value < 0) {
                return 1;
            }
            else {
                return 0;
            }
        }
    }
}

출력

TreeSet: [Zebra, Horse, Dog, Cat]

위의 예에서 CustomComparator를 전달하는 트리 세트를 만들었습니다. 클래스를 인수로 사용합니다.

CustomComparator 클래스는 Comparator을 구현합니다. 인터페이스.

그런 다음 compare()을 재정의합니다. 방법. 이 메서드는 이제 요소를 역순으로 정렬합니다.

자세한 내용은 Java Comparator(공식 Java 설명서)를 참조하십시오.


java

  1. 자바 연산자
  2. 자바 주석
  3. 자바 for-each 루프
  4. 자바 문자열
  5. 자바 인터페이스
  6. 자바 익명 클래스
  7. 자바 리소스 사용
  8. 자바 주석
  9. 자바 어설션
  10. 자바 알고리즘