gpt4 book ai didi

java - 如何从列表中获取不同的元素?

转载 作者:行者123 更新时间:2023-12-01 14:28:10 25 4
gpt4 key购买 nike

以下是我拥有的书单,通过 LinkedList 存储.我可以得到 title , year , pricegenres通过他们使用 getTitle() 的方法, getYear() , getPrice()getGenres() .

我对检索 titles 没有任何问题, yearsprice但是 genres我得到的应该是不同的,即在我拥有的书单中 Programming , Programming , Programming , Drama , Thriller .

当我使用下面的函数时,我确实得到了我应该得到的所有类型 Programming只有一次。

LinkedList<Book> books = new LinkedList<Book>();

books.add(new Book("Java",2000,"Programming", "$20"));
books.add(new Book("Swift",2001,"Programming", "$30"));
books.add(new Book("C#",1990,"Programming", "$40"));
books.add(new Book("The Alchemist",2010,"Drama", "$10"));
books.add(new Book("Goosebumps",2010,"Thriller", "$5"));

private void getGenres(){
for (Genre genre : booksList){
System.out.println(genre.toString());
}
}

我得到的输出为:
Programming
Programming
Programming
Drama
Thriller

但我应该得到的输出是:
Programming
Drama
Thriller

Help from you guys.

我希望你们能理解。

提前致谢。

最佳答案

对于 java 8 和更高版本,您可以使用流从书籍中过滤流派,然后获得不同的值:

LinkedList<Book> books = ...;

private void getGenres(){
List<Genre> genres = books.stream()
.map(x -> x.getGenre())
.distinct()
.collect(Collectors.toList());
for (Genre genre : genres){
System.out.println(genre);
}
}

您的类型 Genre需要执行 Comparable<T>界面:
public class Genre implements Comparable<Genre>{

String name;

public Genre(String name) {
super();
this.name = name;
}

@Override
public int compareTo(Genre otherGenre) {
return name.compareTo(otherGenre.name);
}

@Override
public String toString() {
return name;
}

}

关于java - 如何从列表中获取不同的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com