Java에서 순서가 지정된 맵 만들기
맵은 키와 값 쌍을 저장하는 Java의 데이터 구조입니다. 지도는 Collection
계층 구조에 있는 인터페이스
입니다. 이러한 키는 고유하므로 중복 키가 허용되지 않습니다. 그러나 키에 매핑된 변수는 중복 값을 가질 수 있습니다. HashMap
, LinkedHashMap
, TreeMap
과 같은 클래스는 Map
인터페이스를 구현합니다.
Java의 TreeMap
클래스를 사용하여 맵 정렬
아래에서 프로그램은 Java 프로그램의 맵 순서를 보여줍니다.
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
map.put("Third", 1);
map.put("First", 2);
map.put("Second", 3);
for (String key : map.keySet()) {
System.out.println(key + " ,ID = " + map.get(key));
}
}
}
TreeMap
클래스는 지도 값을 오름차순으로 정렬합니다. 또한 내부적으로 SortedMap
인터페이스를 구현하므로 새 키워드를 사용하여 맵 인스턴스가 생성됩니다.
트리맵 내부의 데이터 유형은 인스턴스화 시 지정됩니다. Map
키는 String
유형이고 값은 Integer
유형입니다.
put
함수는 트리맵에 키-값 쌍을 삽입합니다. 이제 for-each
루프가 맵을 반복하도록 정의됩니다. Java에서는 맵에 대한 직접 반복이 불가능합니다. 따라서 지도의 키는 처음에 Set
인스턴스로 변환됩니다.
map.keySet
함수는 지도에 있는 키의 Set
를 반환합니다. 이 함수는 TreeMap
클래스에 있으며 현재 키의 정렬된 보기를 반환합니다. get
함수는 키에 해당하는 값을 가져옵니다.
아래는 오름차순으로 출력한 것입니다.
First, ID = 2 Second, ID = 3 Third, ID = 1
Java 8 함수를 사용하여 맵 순서 만들기
Java 8은 사용자가 기능 체인을 통해 작업할 수 있도록 하는 기능 프로그래밍을 지원합니다.
Streams
는 java.util
패키지의 인터페이스로, 단일 명령문에서 순차 작업을 쉽게 수행할 수 있습니다. Streams
함수는 이미터가 데이터를 내보내는 파이프라인에서 작동합니다. 사용자의 요구에 따라 필터링, 처리, 변환 등의 작업을 수행합니다.
package F09;
import static java.util.AbstractMap.SimpleEntry;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MapOrdering {
public static void main(String[] args) {
Map<String, String> mapSortedByKey =
Stream
.of(new SimpleEntry<>("key3", "value1"), new SimpleEntry<>("key1", "value2"),
new SimpleEntry<>("key2", "value3"))
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldVal, newValue) -> oldVal, LinkedHashMap::new));
System.out.println();
System.out.print("Ordered List: ");
for (String s1 : mapSortedByKey.keySet()) {
System.out.print(" " + s1);
}
}
}
Stream
인터페이스는 다양한 기능을 제공하고 다른 클래스에서 이를 구현하여 작업합니다. 여기에서 키-값 쌍의 스트림은 새 SimpleEntry
클래스를 사용하여 형성됩니다. 값이 of
함수에 삽입되어 스트림을 형성합니다.
체인 시리즈에서 sorted
함수가 호출됩니다. 이 함수는 Comparator
인스턴스를 사용하여 정의된 순서에 따라 키를 순서대로 정렬합니다. comparingByKey
함수는 키를 자연 오름차순으로 비교하는 비교기를 반환합니다.
sorted
함수는 마침내 오름차순으로 정렬된 값 스트림을 반환합니다. Stream
클래스의 collect
함수는 새 LinkedHashMap
인스턴스에서 지정된 맵 값을 수집합니다. 클래스는 제공된 시퀀스의 삽입 순서를 유지합니다. 이 함수는 Collector
인스턴스를 매개변수로 사용합니다.
첫 번째 매개변수는 새 컨테이너를 생성하는 공급자 toMap
함수입니다. 두 번째 매개변수는 값을 누적하는 BiConsumer
이고 마지막 매개변수는 결과를 병합하는 결합기 역할을 하는 BiConsumer
입니다. 따라서 LinkedHashMap::new
명령은 결과를 결합하고 형성된 인스턴스를 반환합니다.
mapSortedByKey
인스턴스는 이제 위의 for-each
루프를 사용하여 반복되는 순차 맵 요소를 보유합니다. 결과 맵 키는 아래 표준 출력에 인쇄됩니다.
Ordered List : key1 key2 key3
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn