List怎样和Map互相转化

来源:4-2 Map实现类—HashMap与LinkedHashMap的区别

何艾莉

2022-09-17 20:11:24

老师好,List怎样和Map互相转化,能不能提供一下代码讲解,我今天面试问到了。我回答不出,谢谢老师的回答。

写回答

1回答

好帮手慕小小

2022-09-18

同学你好,代码实现方式不唯一,可参考如下代码实现:

使用for循环:

public class ListToMap {
    public static void main(String[] args) {
        List<Movie> movies = new ArrayList<Movie>();
        movies.add(new Movie(1009, "MOVIE_1"));
        movies.add(new Movie(1100, "MOVIE_2"));

        Map<Integer, Movie> mappedMovies = new HashMap<Integer, Movie>();
        for (Movie movie : movies) {
            mappedMovies.put(movie.getId(), movie);
        }
        //遍历
        mappedMovies.forEach((key, value) -> System.out.println(key + "," + value));
    }
}

class Movie {

    private Integer id;
    private String description;

    public Movie(Integer id, String description) {
        super();
        this.id = id;
        this.description = description;
    }

    public Integer getId() {
        return id;
    }

    public String getDescription() {
        return description;
    }

    @Override
    public String toString() {
        return "Movie{" +
                "rank=" + id +
                ", description='" + description + '\'' +
                '}';
    }
}

使用Stream:

public class ListToMap {
    public static void main(String[] args) {
        List<Movie> movies = new ArrayList<Movie>();
        movies.add(new Movie(1009, "MOVIE_1"));
        movies.add(new Movie(1100, "MOVIE_2"));

        Map<Integer, Movie> mappedMovies = movies.stream().collect(
                Collectors.toMap(Movie::getId, p -> p));
        //遍历
        mappedMovies.forEach((key, value) -> System.out.println(key + "," + value));
    }
}

class Movie {

    private Integer id;
    private String description;

    public Movie(Integer id, String description) {
        super();
        this.id = id;
        this.description = description;
    }

    public Integer getId() {
        return id;
    }

    public String getDescription() {
        return description;
    }

    @Override
    public String toString() {
        return "Movie{" +
                "rank=" + id +
                ", description='" + description + '\'' +
                '}';
    }
}

Map转List参考代码:

//Map转为List
Set<Map.Entry<Integer, Movie>> entrySet = mappedMovies.entrySet();
List<Map.Entry<Integer, Movie>> list1 = new ArrayList<>();
for (Map.Entry<Integer,Movie> entry : entrySet){
    list1.add(entry);
}
System.out.println(list1);

List<Map.Entry<Integer, Movie>> list2 = new ArrayList<>();
entrySet.forEach(entry -> list2.add(entry));
System.out.println(list2);

祝学习愉快~

0

0 学习 · 9886 问题

查看课程

相似问题

回答 1

回答 1

回答 1

回答 1