You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改图书流派打印代码:仅输出一个SciFi类流派

没问题,我来帮你实现「只打印不重复的图书流派,SciFi类仅输出一个」的需求!先把你的代码片段整理清楚,再给你两种可行的实现方案:

首先是你的基础代码(我帮你补全了语法细节):

public class Catalogue {
    private List<Movie> moviesAvailable;
    private List<Movie> moviesRented;
    private List<Genre> genres;

    public Catalogue() {
        moviesAvailable = new LinkedList<Movie>();
        moviesRented = new LinkedList<Movie>();
        genres = new LinkedList<Genre>(...); // 这里是你初始化流派列表的代码
    }
}

方案1:直接对已有流派列表去重打印

如果你的genres列表里已经包含所有流派,但存在重复条目(比如多个SciFi),用HashSet自动去重是最方便的——因为Set天然不允许重复元素。

添加这个方法到Catalogue类里:

public void printUniqueGenres() {
    // 把流派列表转成Set自动去重
    Set<Genre> uniqueGenres = new HashSet<>(genres);
    
    // 遍历打印每个去重后的流派
    for (Genre genre : uniqueGenres) {
        System.out.println(genre.getName()); // 假设Genre类有getName()方法获取流派名称
    }
}

方案2:从所有电影中提取并去重流派

如果流派是关联在电影对象上的,需要从「可用电影」和「已租电影」里统一提取流派再去重:

添加这个方法即可:

public void printUniqueGenresFromMovies() {
    Set<Genre> uniqueGenres = new HashSet<>();
    
    // 加入可用电影的所有流派
    for (Movie movie : moviesAvailable) {
        uniqueGenres.add(movie.getGenre()); // 假设Movie类有getGenre()方法
    }
    // 加入已租电影的所有流派
    for (Movie movie : moviesRented) {
        uniqueGenres.add(movie.getGenre());
    }
    
    // 打印最终去重后的流派
    for (Genre genre : uniqueGenres) {
        System.out.println(genre.getName());
    }
}

⚠️ 注意:要让HashSet正确识别重复的流派,你的Genre类必须重写equals()和hashCode()方法,否则会把不同对象实例的SciFi当成不同流派。给你补一下Genre类的关键代码:

public class Genre {
    private String name;

    // 构造函数、getName()、setName()...

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Genre genre = (Genre) o;
        return Objects.equals(name, genre.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}

这样无论多少个SciFi流派实例,只要名称相同,就只会被保留一个啦!

内容的提问来源于stack exchange,提问作者Pramish Luitel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:07:12