stream 을 사용 하여 list 를 map 로 변환 합 니 다.
그 중에서 서로 다른 value 와 서로 다른 key 및 과학 연구 중복 시 해결 방안 을 포함한다.
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.junit.Test;
/**
* Created by Jackielee on 2017
* @author: lizhilong
* @date: 2017-11-24 10:13:57
* @Copyright: 2017 www.aliyun.com Inc. All rights reserved.
*/
public class DemoListToMap {
List list = Arrays.asList(new Student(1, 18, " ", GenderColumn.BOY.getCode()),
new Student(2, 17, " ", GenderColumn.GIRL.getCode()),
new Student(3, 17, " ", GenderColumn.LADYBOY.getCode()));
@Test
public void listToMapByObjectValue(){
// value student -> student jdk1.8
Map map = list.stream().collect(Collectors.toMap(Student::getId, student -> student));
//
map.forEach((key, value) -> {
System.out.println("key: " + key + " value: " + value);
});
}
@Test
public void listToMapByNameValue(){
// value
Map map = list.stream().collect(Collectors.toMap(Student::getId, Student::getName));
map.forEach((key, value) -> {
System.out.println("key: " + key + " value: " + value);
});
}
}
value 대상 실행 결과:
key: 1 value: Student [id=1, age=18, name= , gender=0]
key: 2 value: Student [id=2, age=17, name= , gender=1]
key: 3 value: Student [id=3, age=17, name= , gender=2]
value 필드 실행 결과:
key: 1 value:
key: 2 value:
key: 3 value:
주의해 야 할 것 은 맵 의 키 가 유일 해 야 하기 때문에 유일 하지 않 을 때 오류 가 발생 할 수 있 습 니 다.
@Test
public void listToMapByAgeKey(){
// value
Map map = list.stream().collect(Collectors.toMap(Student::getAge, Student::getName));
}
실행 결과:
java.lang.IllegalStateException: Duplicate key
왜냐하면 age 가 똑 같 으 면 틀 리 니까.
이 때 stream 패키지 아래 Collectors.toMap 방법 은 리 셋 방법의 매개 변수 가 있 습 니 다.이 매개 변 수 는 합 친 함수 로 충돌 을 해결 할 수 있 습 니 다.
@Test
public void listToMapByAgeKey(){
// value
Map map = list.stream().collect(
Collectors.toMap(Student::getAge, Student::getName, (key1, key2) -> key1)
);
map.forEach((key, value) -> {
System.out.println("key: " + key + " value: " + value);
});
}
실행 결과:
key: 17 value:
key: 18 value:
순수한 수공 조작 으로 비판 과 시정 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.