logo

Java의 지도 인터페이스

Java에서 Map 인터페이스는 java.util 패키지에 존재하며 키와 값 간의 매핑을 나타냅니다. Java Map 인터페이스는 Java Map 인터페이스의 하위 유형이 아닙니다. 컬렉션 인터페이스 . 따라서 나머지 컬렉션 유형과 약간 다르게 동작합니다. 맵에는 고유 키가 포함되어 있습니다.

괴짜들, 브레인스토머는 그랬어야 했어 지도를 사용해야 하는 이유와 시기.

맵은 사전과 같은 키-값 연관 매핑에 사용하기에 적합합니다. 맵은 키로 조회를 수행하거나 누군가가 키로 요소를 검색하고 업데이트하려고 할 때 사용됩니다. 몇 가지 일반적인 시나리오는 다음과 같습니다.



  • 오류 코드 및 해당 설명 맵입니다.
  • 우편번호와 도시의 지도입니다.
  • 관리자와 직원의 지도입니다. 각 관리자(키)는 그가 관리하는 직원 목록(값)과 연결됩니다.
  • 수업과 학생 지도입니다. 각 수업(키)은 학생 목록(값)과 연결됩니다.

Java의 지도 인터페이스

지도 객체 생성

지도는 상호 작용 , 맵 유형의 객체를 생성할 수 없습니다. 객체를 생성하려면 항상 이 맵을 확장하는 클래스가 필요합니다. 또한, 도입 이후에는 제네릭 Java 1.5에서는 Map에 저장할 수 있는 객체 유형을 제한하는 것이 가능합니다.

통사론: 유형 안전 맵 정의

Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>

지도 인터페이스의 특징

  1. 맵에는 중복 키가 포함될 수 없으며 각 키는 최대 하나의 값에 매핑될 수 있습니다. 일부 구현에서는 HashMap 및 LinkedHashMap과 같은 null 키 및 null 값을 허용하지만 일부는 다음을 좋아하지 않습니다. 트리맵 .
  2. 맵의 순서는 특정 구현에 따라 다릅니다. 예를 들어, 트리맵 LinkedHashMap은 예측 가능한 순서를 갖고 있지만 HashMap은 그렇지 않습니다.
  3. Java에서 Map을 구현하기 위한 두 가지 인터페이스가 있습니다. 이는 Map 및 SortedMap 과 HashMap, TreeMap 및 LinkedHashMap의 세 가지 클래스입니다.

Java 맵 인터페이스의 메소드

방법 수행된 작업
분명한() 이 메소드는 지정된 맵 컬렉션에서 모든 요소 또는 매핑을 지우고 제거하기 위해 Java 맵 인터페이스에서 사용됩니다.
포함키(객체) 이 메소드는 특정 키가 맵에 매핑되는지 여부를 확인하기 위해 Java의 맵 인터페이스에서 사용됩니다. 키 요소를 매개변수로 사용하고 해당 요소가 맵에 매핑되면 True를 반환합니다.
포함값(객체) 이 메소드는 맵 인터페이스에서 특정 값이 맵의 단일 키 또는 둘 이상의 키에 의해 매핑되는지 확인하는 데 사용됩니다. 값을 매개변수로 사용하고 해당 값이 맵의 키에 매핑되면 True를 반환합니다.
엔트리셋() 이 메소드는 Java의 맵 인터페이스에서 맵에 포함된 동일한 요소로 세트를 생성하는 데 사용됩니다. 기본적으로 지도의 집합 보기를 반환하거나 새 집합을 만들고 지도 요소를 여기에 저장할 수 있습니다.
같음(객체) 이 메소드는 Java Map Interface에서 두 맵 간의 동등성을 확인하는 데 사용됩니다. 매개변수로 전달된 한 맵의 요소가 이 맵의 요소와 동일한지 여부를 확인합니다.
get(객체) 이 메소드는 매개변수에 언급된 특정 키에 매핑된 값을 검색하거나 가져오는 데 사용됩니다. 맵에 키에 대한 매핑이 포함되어 있지 않으면 NULL을 반환합니다.
해시 코드() 이 메소드는 맵 인터페이스에서 키와 값을 포함하는 지정된 맵에 대한 hashCode를 생성하는 데 사용됩니다.
비었다() 이 메소드는 맵에 키 및 값 쌍에 대한 항목이 있는지 확인하는 데 사용됩니다. 매핑이 없으면 true를 반환합니다.
키세트() 이 메소드는 맵 인터페이스에서 이 맵에 포함된 키의 Set 뷰를 반환하는 데 사용됩니다. 세트는 맵의 지원을 받으므로 맵에 대한 변경 사항이 세트에 반영되고 그 반대의 경우도 마찬가지입니다.
put(객체, 객체) 이 메소드는 지정된 값을 이 맵의 지정된 키와 연관시키기 위해 Java 맵 인터페이스에서 사용됩니다.
putAll(지도) 이 메소드는 지정된 맵의 모든 매핑을 이 맵에 복사하기 위해 Java의 맵 인터페이스에서 사용됩니다.
제거(객체) 이 메소드는 맵에 키가 있는 경우 이 맵에서 키에 대한 매핑을 제거하기 위해 맵 인터페이스에서 사용됩니다.
크기() 이 메소드는 맵에서 사용 가능한 키/값 쌍의 수를 반환하는 데 사용됩니다.
값() 이 메소드는 Java Map Interface에서 맵 값으로 컬렉션을 생성하는 데 사용됩니다. 기본적으로 HashMap 값의 컬렉션 뷰를 반환합니다.
getOrDefault(객체 키, V defaultValue) 지정된 키가 매핑된 값을 반환하거나, 이 맵에 키에 대한 매핑이 포함되어 있지 않은 경우 defaultValue를 반환합니다.
merge(K 키, V 값, BiFunction remappingFunction) 지정된 키가 아직 값과 연결되어 있지 않거나 null과 연결되어 있는 경우 해당 키를 지정된 null이 아닌 값과 연결합니다.
putIfAbsent(K 키, V 값) 지정된 키가 아직 값과 연결되지 않은 경우(또는 null에 매핑된 경우) 해당 키를 지정된 값과 연결하고 null을 반환하고, 그렇지 않으면 현재 연결 값을 반환합니다.

예:

자바




// Java Program to Demonstrate> // Working of Map interface> > // Importing required classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty HashMap> >Map hm> >=>new> HashMap();> > >// Inserting pairs in above Map> >// using put() method> >hm.put(>'a'>,>new> Integer(>100>));> >hm.put(>'b'>,>new> Integer(>200>));> >hm.put(>'c'>,>new> Integer(>300>));> >hm.put(>'d'>,>new> Integer(>400>));> > >// Traversing through Map using for-each loop> >for> (Map.Entry me :> >hm.entrySet()) {> > >// Printing keys> >System.out.print(me.getKey() +>':'>);> >System.out.println(me.getValue());> >}> >}> }>

>

>

산출:

git add --all
a:100 b:200 c:300 d:400>

Map 인터페이스를 구현하는 클래스는 아래 미디어에 설명되어 있으며 나중에 다음과 같이 설명됩니다.

지도 인터페이스

1. 해시맵

해시맵 Java 1.2 이후 Java 컬렉션의 일부입니다. 이는 Java Map 인터페이스의 기본 구현을 제공합니다. (키, 값) 쌍으로 데이터를 저장합니다. 값에 접근하려면 해당 키를 알아야 합니다. 이 클래스는 Java라는 기술을 사용합니다.




// Java Program to illustrate the Hashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >Map map =>new> HashMap();> > >// Inserting entries in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }>

>

>

산출

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap은 삽입된 요소의 순서를 유지하는 추가 기능이 있는 HashMap과 같습니다. HashMap은 빠른 삽입, 검색 및 삭제의 이점을 제공했지만 삽입 순서에 따라 요소에 액세스할 수 있는 LinkedHashMap이 제공하는 삽입 추적 및 순서를 유지하지 못했습니다. 이 클래스를 사용하여 지도 객체를 생성하는 방법을 살펴보겠습니다.

자바




// Java Program to Illustrate the LinkedHashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty LinkedHashMap> >Map map =>new> LinkedHashMap();> > >// Inserting pair entries in above Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }>

>

>

산출

vishal 10 sachin 30 vaibhav 20>

3. 트리맵

그만큼 자바의 트리맵 추상 클래스와 함께 Map 인터페이스 및 NavigableMap을 구현하는 데 사용됩니다. 맵은 사용되는 생성자에 따라 키의 자연스러운 순서에 따라 또는 맵 생성 시 제공되는 비교기에 따라 정렬됩니다. 이는 키-값 쌍을 정렬하고 저장하는 효율적인 방법임이 입증되었습니다. 트리맵에 의해 유지되는 저장 순서는 명시적 비교자에 관계없이 다른 정렬된 맵과 마찬가지로 같음과 일치해야 합니다. 이 클래스를 사용하여 지도 객체를 생성하는 방법을 살펴보겠습니다.

자바




// Java Program to Illustrate TreeMap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty TreeMap> >Map map =>new> TreeMap();> > >// Inserting custom elements in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map using for each loop> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }>

>

>

산출

sachin 30 vaibhav 20 vishal 10>

다음을 사용하여 작업 수행 지도 인터페이스 그리고 해시맵 클래스

Map은 인터페이스이므로 이 인터페이스를 구현하는 클래스에서만 사용할 수 있습니다. 이제 널리 사용되는 몇 가지 작업을 지도에서 수행하는 방법을 살펴보겠습니다. 해시맵 클래스 . 또한, 도입 이후에는 제네릭 Java 1.5에서는 맵에 저장할 수 있는 객체 유형을 제한할 수 있습니다.

1. 요소 추가

지도에 요소를 추가하려면 put() 메서드를 사용할 수 있습니다. 그러나 삽입 순서는 해시맵에 유지되지 않습니다. 내부적으로 모든 요소에 대해 별도의 해시가 생성되고 이 해시를 기반으로 요소가 인덱싱되어 더욱 효율적으로 만들어집니다.

자바




// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> >// Default Initialization of a> >// Map> >Map hm1 =>new> HashMap();> > >// Initialization of a Map> >// using Generics> >Map hm2> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> > >hm2.put(>new> Integer(>1>),>'Geeks'>);> >hm2.put(>new> Integer(>2>),>'For'>);> >hm2.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(hm1);> >System.out.println(hm2);> >}> }>

Java에서 날짜 형식 지정

>

>

산출

{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}>

2. 요소 변경

요소를 추가한 후 요소를 변경하려면 put() 메서드를 사용하여 요소를 다시 추가하면 됩니다. 맵의 요소는 키를 사용하여 인덱싱되므로 변경하려는 키에 대해 업데이트된 값을 삽입하기만 하면 키 값을 변경할 수 있습니다.

자바




// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'Geeks'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(>'Initial Map '> + hm1);> > >hm1.put(>new> Integer(>2>),>'For'>);> > >System.out.println(>'Updated Map '> + hm1);> >}> }>

>

>

산출

Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. 요소 제거

Map에서 요소를 제거하려면 Remove() 메서드를 사용할 수 있습니다. 이 메소드는 키 값을 가져와 맵에 키가 있는 경우 이 맵에서 키에 대한 매핑을 제거합니다.

자바




// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> >hm1.put(>new> Integer(>4>),>'For'>);> > >// Initial Map> >System.out.println(hm1);> > >hm1.remove(>new> Integer(>4>));> > >// Final Map> >System.out.println(hm1);> >}> }>

>

>

산출

{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}>

4. 지도를 통한 반복

맵을 반복하는 방법에는 여러 가지가 있습니다. 가장 유명한 방법은 for-each 루프를 사용하여 키를 얻는 것입니다. 키 값은 getValue() 메서드를 사용하여 찾습니다.

자바




// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >for> (Map.Entry mapElement : hm1.entrySet()) {> >int> key = (>int>)mapElement.getKey();> > >// Finding the value> >String value = (String)mapElement.getValue();> > >System.out.println(key +>' : '> + value);> >}> >}> }>

>

>

산출

1 : Geeks 2 : For 3 : Geeks>

5. 해시맵을 사용하여 숫자의 발생 횟수 계산

이 코드에서 우리는 putIfAbsent( ) 와 함께 컬렉션.주파수() 숫자의 정확한 발생을 계산합니다. 많은 프로그램에서는 특정 숫자나 문자의 발생 횟수를 세어야 합니다. 이러한 유형의 문제를 해결하려면 다음 접근 방식을 사용합니다.

자바




// Java program to Count the Occurrence> // of numbers using Hashmap> import> java.util.*;> > class> HelloWorld {> >public> static> void> main(String[] args)> >{> >int> a[] = {>1>,>13>,>4>,>1>,>41>,>31>,>31>,>4>,>13>,>2> };> > >// put all elements in arraylist> >ArrayList aa =>new> ArrayList();> >for> (>int> i =>0>; i aa.add(a[i]); } HashMap h = new HashMap(); // counting occurrence of numbers for (int i = 0; i h.putIfAbsent(aa.get(i), Collections.frequency( aa, aa.get(i))); } System.out.println(h); } }>

>

>

산출

{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}>

Java 맵 인터페이스 FAQ

Q1. Java의 맵 인터페이스란 무엇입니까?

답변:

맵에는 키-값 쌍이 포함되어 있으며 여기서 키 값을 사용하여 맵의 요소에 액세스합니다.

Q2. Java의 맵 인터페이스 유형은 무엇입니까?

답변:

HashMap, LinkedHashMap 및 TreeMap의 3가지 맵 인터페이스 구현이 있습니다.