어떻게 자바 8 Stream API 를 이용 하여 맵 버튼 이나 값 을 정렬 합 니까?
자바 8 Streams 를 사용 하면 키 와 값 에 따라 맵 을 정렬 할 수 있 습 니 다.다음은 그의 작업 원리 이다.
자바 스 트림 함수 식 프로 그래 밍?사용 한 적 이 있 으 면 모두 좋다 고 말 하고,사례 도문 을 상세 하 게 너 에 게 줄 게.
2.HashMap 의 merge()함수 학습
Map 정렬 을 배우 기 전에 HashMap 의 merge()함 수 를 말씀 드릴 필요 가 있 습 니 다.이 함수 응용 장면 은 Key 가 중복 되 었 을 때 Map 의 요소 값 을 어떻게 처리 하 는 지 입 니 다.이 함 수 는 세 개의 인자 가 있다.
인자 1:map 에 put 키인자 2:map 에 put 의 값4.567917.매개 변수 3:키 가 중복 되면 값 을 어떻게 처리 합 니까?함수 일 수도 있 고 lambda 표현 식 으로 쓸 수도 있 습 니 다
String k = "key";
HashMap<String, Integer> map = new HashMap<String, Integer>() {{
put(k, 1);
}};
map.merge(k, 2, (oldVal, newVal) -> oldVal + newVal);
위의 코드 를 보면 우 리 는 먼저 HashMap 을 만 들 고 키 값 이 k:1 인 요 소 를 넣 었 습 니 다.merge 함 수 를 호출 하여 맵 에 k:2 키 가 맞 을 때 k 키 가 중복 되면 뒤의 lambda 표현 식 을 실행 합 니 다.표현 식 의 의 미 는 이전 값 인 oldVal 에 새 값 인 newVal(1+2)을 되 돌려 주 는 것 입 니 다.현재 map 에는 k:3 요소 만 있 습 니 다.사실 lambda 표현 식 은 매우 간단 합 니 다.익명 함 수 를 나타 내 고 화살표 왼쪽 은 매개 변수 이 며 화살표 오른쪽 은 함수 체 입 니 다.함수 의 매개 변수 유형 과 반환 값 은 코드 컨 텍스트 에서 확인 합 니 다.
3.맵 의 키 로 정렬
다음 예 는 자바 8 Stream 을 사용 하여 맵 의 키 를 눌 러 정렬 합 니 다.
// Map,
Map<String, Integer> codes = new HashMap<>();
codes.put("United States", 1);
codes.put("Germany", 49);
codes.put("France", 33);
codes.put("China", 86);
codes.put("Pakistan", 92);
// Map
Map<String, Integer> sortedMap = codes.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(
Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldVal, newVal) -> oldVal,
LinkedHashMap::new
)
);
// Map
sortedMap.entrySet().forEach(System.out::println);
위의 두 번 째 코드 를 보십시오.China=86
France=33
Germany=49
Pakistan=92
United States=1
정렬 결 과 를 순서대로 저장 하기 위해 링크 드 HashMap 을 사용 하 십시오.기본적으로 Collectors.toMap()은 HashMap 으로 돌아 갑 니 다.HashMap 은 원소 의 순 서 를 보장 할 수 없습니다.
키 에 따라 역방향 으로 정렬 하려 면 아래 그림 의 빨간색 부분 코드 를 추가 하면 됩 니 다.
4.Map 의 값 으로 정렬
물론 Stream API 를 사용 하여 그 값 에 따라 맵 을 정렬 할 수 있 습 니 다.
Map<String, Integer> sortedMap2 = codes.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldVal, newVal) -> oldVal,
LinkedHashMap::new));
sortedMap2.entrySet().forEach(System.out::println);
이것 은 맵 의 값 순 서 를 표시 하 는 출력 입 니 다:United States=1
France=33
Germany=49
China=86
Pakistan=92
5.TreeMap 버튼 으로 정렬
트 리 맵 안의 요소 가 순서 가 있다 는 것 을 모두 가 알 고 있 을 수 있 기 때문에 트 리 맵 을 이용 하여 순 서 를 매 기 는 것 도 바람 직 한 방법 이다.당신 이 해 야 할 일 은 TreeMap 대상 을 만 들 고 데 이 터 를 HashMapput 에서 TreeMap 까지 매우 간단 합 니 다.
// `HashMap` `TreeMap`
Map<String, Integer> sorted = new TreeMap<>(codes);
이것 은 출력 입 니 다:China=86
France=33
Germany=49
Pakistan=92
United States=1
위 에서 보 듯 이 키(국가/지역 이름)는 자연 자모 순 으로 정렬 됩 니 다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Liquibase】DB 작성·테이블 정의 변경신규 스타터 프로젝트 작성 Liquibase와 MySQL 선택 application.properties에 DB 정보 넣기 MySQL에서 "testdatabase"라는 데이터베이스 만들기 빌드 종속성 추가 build....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.