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

자바 트리맵

자바 트리맵

이 자습서에서는 예제를 통해 Java TreeMap 클래스와 해당 작업에 대해 알아봅니다.

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

NavigableMap 인터페이스를 구현합니다.

<시간>

트리맵 생성

TreeMap를 생성하려면 , java.util.TreeMap을 가져와야 합니다. 먼저 패키지. 패키지를 가져오면 다음은 TreeMap를 만드는 방법입니다. 자바로.

TreeMap<Key, Value> numbers = new TreeMap<>();

위의 코드에서 TreeMap을 생성했습니다. 명명된 숫자 아무 주장 없이. 이 경우 TreeMap의 요소는 자연스럽게 정렬됩니다(오름차순).

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

여기,

<시간>

TreeMap의 메소드

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

<시간>

TreeMap에 요소 삽입

예를 들어,

import java.util.TreeMap;

class Main {
    public static void main(String[] args) {
        // Creating TreeMap of even numbers
        TreeMap<String, Integer> evenNumbers = new TreeMap<>();

        // Using put()
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);

        // Using putIfAbsent()
        evenNumbers.putIfAbsent("Six", 6);
        System.out.println("TreeMap of even numbers: " + evenNumbers);

        //Creating TreeMap of numbers
        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("One", 1);

        // Using putAll()
        numbers.putAll(evenNumbers);
        System.out.println("TreeMap of numbers: " + numbers);
    }
}

출력

TreeMap of even numbers: {Four=4, Six=6, Two=2}
TreeMap of numbers: {Four=4, One=1, Six=6, Two=2}
<시간>

트리맵 요소 액세스

1. entrySet(), keySet() 및 values() 사용

예를 들어,

import java.util.TreeMap;

class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> numbers = new TreeMap<>();

        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("TreeMap: " + numbers);

        // Using entrySet()
        System.out.println("Key/Value mappings: " + numbers.entrySet());

        // Using keySet()
        System.out.println("Keys: " + numbers.keySet());

        // Using values()
        System.out.println("Values: " + numbers.values());
    }
}

출력

TreeMap: {One=1, Three=3, Two=2}
Key/Value mappings: [One=1, Three=3, Two=2]
Keys: [One, Three, Two]
Values: [1, 3, 2]

2. get() 및 getOrDefault() 사용

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("TreeMap: " + numbers);

        // Using get()
        int value1 = numbers.get("Three");
        System.out.println("Using get(): " + value1);

        // Using getOrDefault()
        int value2 = numbers.getOrDefault("Five", 5);
        System.out.println("Using getOrDefault(): " + value2);
    }
}

출력

TreeMap: {One=1, Three=3, Two=2}
Using get(): 3
Using getOrDefault(): 5

여기서 getOrDefault() 메소드가 Five 키를 찾지 못했습니다. . 따라서 지정된 기본값 5를 반환합니다. .

<시간>

TeMap 요소 제거

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("TreeMap: " + numbers);

        // remove method with single parameter
        int value = numbers.remove("Two");
        System.out.println("Removed value: " + value);

        // remove method with two parameters
        boolean result = numbers.remove("Three", 3);
        System.out.println("Is the entry {Three=3} removed? " + result);

        System.out.println("Updated TreeMap: " + numbers);
    }
}

출력

TreeMap: {One=1, Three=3, Two=2}
Removed value = 2
Is the entry {Three=3} removed? True
Updated TreeMap: {One=1}
<시간>

TreeMap 요소 교체

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        System.out.println("Original TreeMap: " + numbers);

        // Using replace()
        numbers.replace("Second", 22);
        numbers.replace("Third", 3, 33);
        System.out.println("TreeMap using replace: " + numbers);

        // Using replaceAll()
        numbers.replaceAll((key, oldValue) -> oldValue + 2);
        System.out.println("TreeMap using replaceAll: " + numbers);
    }
}

출력

Original TreeMap: {First=1, Second=2, Third=3}
TreeMap using replace(): {First=1, Second=22, Third=33}
TreeMap using replaceAll(): {First=3, Second=24, Third=35}

위의 프로그램에서 선언문을 확인하십시오.

numbers.replaceAll((key, oldValue) -> oldValue + 2);

여기에서는 람다 식을 인수로 전달했습니다.

replaceAll() 메소드는 맵의 모든 항목에 액세스합니다. 그런 다음 모든 요소를 ​​새 값(람다 식에서 반환됨)으로 바꿉니다.

<시간>

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

1. 첫 번째 및 마지막 방법

예를 들어,

import java.util.TreeMap;

class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        System.out.println("TreeMap: " + numbers);

        // Using the firstKey() method
        String firstKey = numbers.firstKey();
        System.out.println("First Key: " + firstKey);

        // Using the lastKey() method
        String lastKey = numbers.lastKey();
        System.out.println("Last Key: " + lastKey);

        // Using firstEntry() method
        System.out.println("First Entry: " + numbers.firstEntry());


        // Using the lastEntry() method
        System.out.println("Last Entry: " + numbers.lastEntry());
    }
}

출력

TreeMap: {First=1, Second=2, Third=3}
First Key: First
Last Key: Third
First Entry: First=1
Last Entry: Third=3
<시간>

2. 천장, 바닥, 높낮이 방법

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 5);
        numbers.put("Third", 4);
        numbers.put("Fourth", 6);
        System.out.println("TreeMap: " + numbers);

        // Using higher()
        System.out.println("Using higherKey(): " + numbers.higherKey("Fourth"));
        System.out.println("Using higherEntry(): " + numbers.higherEntry("Fourth"));

        // Using lower()
        System.out.println("\nUsing lowerKey(): " + numbers.lowerKey("Fourth"));
        System.out.println("Using lowerEntry(): " + numbers.lowerEntry("Fourth"));

        // Using ceiling()
        System.out.println("\nUsing ceilingKey(): " + numbers.ceilingKey("Fourth"));
        System.out.println("Using ceilingEntry(): " + numbers.ceilingEntry("Fourth"));

        // Using floor()
        System.out.println("\nUsing floorKey(): " + numbers.floorKey("Fourth"));
        System.out.println("Using floorEntry(): " + numbers.floorEntry("Fourth"));


    }
}

출력

TreeMap: {First=1, Fourth=6, Second=5, Third=4}
Using higherKey(): Second
Using higherEntry(): Second=5

Using lowerKey(): First
Using lowerEntry(): First=1

Using ceilingKey(): Fourth
Using ceilingEntry(): Fourth=6

Using floorkey(): Fourth
Using floorEntry(): Fourth=6
<시간>

3. pollFirstEntry() 및 pollLastEntry() 메서드

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        System.out.println("TreeMap: " + numbers);

        //Using the pollFirstEntry() method
        System.out.println("Using pollFirstEntry(): " + numbers.pollFirstEntry());

        // Using the pollLastEntry() method
        System.out.println("Using pollLastEntry(): " + numbers.pollLastEntry());

        System.out.println("Updated TreeMap: " + numbers);

    }
}

출력

TreeMap: {First=1, Second=2, Third=3}
Using pollFirstEntry(): First=1
Using pollLastEntry(): Third=3
Updated TreeMap: {Second=2}
<시간>

4. headMap(), tailMap() 및 subMap() 메서드

headMap(키, 부울 값)

headMap() 메소드는 지정된 key 이전에 트리맵의 모든 키/값 쌍을 반환합니다. (인수로 전달됨).

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

true인 경우 booleanValue로 전달됩니다. , 메소드에는 key의 키/값 쌍도 포함됩니다. 인수로 전달됩니다.

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        numbers.put("Fourth", 4);
        System.out.println("TreeMap: " + numbers);

        System.out.println("\nUsing headMap() Method:");
        // Using headMap() with default booleanValue
        System.out.println("Without boolean value: " + numbers.headMap("Fourth"));

        // Using headMap() with specified booleanValue
        System.out.println("With boolean value: " + numbers.headMap("Fourth", true));

    }
}

출력

TreeMap: {First=1, Fourth=4, Second=2, Third=3}

Using headMap() Method: 
Without boolean value: {First=1}
With boolean value: {First=1, Fourth=4}

tailMap(키, 부울 값)

tailMap() 메서드는 지정된 key에서 시작하는 트리맵의 모든 키/값 쌍을 반환합니다. (인수로 전달됨).

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

false인 경우 booleanValue로 전달됩니다. , 메서드에 지정된 key의 키/값 쌍이 포함되지 않습니다. .

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        numbers.put("Fourth", 4);
        System.out.println("TreeMap: " + numbers);

        System.out.println("\nUsing tailMap() Method:");
        // Using tailMap() with default booleanValue
        System.out.println("Without boolean value: " + numbers.tailMap("Second"));

        // Using tailMap() with specified booleanValue
        System.out.println("With boolean value: " + numbers.tailMap("Second", false));

    }
}

출력

TreeMap: {First=1, Fourth=4, Second=2, Third=3}

Using tailMap() Method:
Without boolean value: {Second=2, Third=3}
With boolean value: {Third=3}

서브맵(k1, bV1, k2, bV2)

subMap() 메소드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k1 항목 포함 .

bV1bV2 선택적 부울 매개변수입니다. bV1의 기본값 true입니다. 및 기본값 bV2 false입니다. .

false인 경우 bV1로 전달됩니다. , 이 메서드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k1 항목을 포함하지 않고 .

true인 경우 bV2로 전달됩니다. , 이 메서드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k2 항목 포함 .

예를 들어,

import java.util.TreeMap;

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

        TreeMap<String, Integer> numbers = new TreeMap<>();
        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        numbers.put("Fourth", 4);
        System.out.println("TreeMap: " + numbers);

        System.out.println("\nUsing subMap() Method:");
        // Using subMap() with default booleanValue
        System.out.println("Without boolean value: " + numbers.subMap("Fourth", "Third"));

        // Using subMap() with specified booleanValue
        System.out.println("With boolean value: " + numbers.subMap("Fourth", false, "Third", true));

    }
}

출력

TreeMap: {First=1, Fourth=2, Second=2, Third=3}

Using subMap() Method:
Without boolean value: {Fourth=4, Second=2}
With boolean value: {Second=2, Third=3}
<시간>

TreeMap의 다른 방법

메소드 설명
clone() TreeMap 사본을 생성합니다.
containsKey() TreeMap 검색 지정된 키에 대해 부울 결과를 반환합니다.
containsValue() TreeMap 검색 지정된 값에 대해 부울 결과를 반환합니다.
size() TreeMap의 크기를 반환합니다.
clear() TreeMap에서 모든 항목을 제거합니다.
<시간>

트리맵 비교기

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

이를 위해 트리맵에서 정렬된 키를 기반으로 자체 비교기 클래스를 만들어야 합니다. 예를 들어,

import java.util.TreeMap;
import java.util.Comparator;

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

        // Creating a treemap with a customized comparator
        TreeMap<String, Integer> numbers = new TreeMap<>(new CustomComparator());

        numbers.put("First", 1);
        numbers.put("Second", 2);
        numbers.put("Third", 3);
        numbers.put("Fourth", 4);
        System.out.println("TreeMap: " + numbers);
    }

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

        @Override
        public int compare(String number1, String number2) {
            int value =  number1.compareTo(number2);

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

출력

TreeMap: {Third=3, Second=2, Fourth=4, First=1}

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

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

그런 다음 compare()를 재정의합니다. 요소를 역순으로 정렬하는 방법입니다.

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


java

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