리스트를 맵으로 바꾸는 세 가지 방법
본고에서 list를 맵으로 전환하는 세 가지 방법을 소개한다. 1) 전통적인 방법은 다음과 같은 종류가 있다고 가정한다.
Java 코드
class Movie {
private Integer rank;
private String description;
public Movie(Integer rank, String description) {
super();
this.rank = rank;
this.description = description;
}
public Integer getRank() {
return rank;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("rank", rank)
.add("description", description)
.toString();
}
}
1. 전통적인 방법을 사용한다.
@Test
public void convert_list_to_map_with_java () {
List movies = new ArrayList();
movies.add(new Movie(1, "The Shawshank Redemption"));
movies.add(new Movie(2, "The Godfather"));
Map mappedMovies = new HashMap();
for (Movie movie : movies) {
mappedMovies.put(movie.getRank(), movie);
}
logger.info(mappedMovies);
assertTrue(mappedMovies.size() == 2);
assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());
}
2、JAVA 8 직접 흐르는 방법
@Test
public void convert_list_to_map_with_java8_lambda () {
List movies = new ArrayList();
movies.add(new Movie(1, "The Shawshank Redemption"));
movies.add(new Movie(2, "The Godfather"));
Map mappedMovies = movies.stream().collect(
Collectors.toMap(Movie::getRank, (p) -> p));
logger.info(mappedMovies);
assertTrue(mappedMovies.size() == 2);
assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());
}
3、guava 도구 클래스 라이브러리 사용
@Test
public void convert_list_to_map_with_guava () {
List movies = Lists.newArrayList();
movies.add(new Movie(1, "The Shawshank Redemption"));
movies.add(new Movie(2, "The Godfather"));
Map mappedMovies = Maps.uniqueIndex(movies, new Function () {
public Integer apply(Movie from) {
return from.getRank();
}});
logger.info(mappedMovies);
assertTrue(mappedMovies.size() == 2);
assertEquals("The Shawshank Redemption", mappedMovies.get(1).getDescription());
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.