如果我想按字段(例如名称)搜索对象,我应该使用什么java数据结构?

问题描述 投票:0回答:1

我是 Java 新手。谁能帮我完成这个作业吗?

public class Book {
    private Integer id;
    private String title;
    private String author;
    private Integer pages;
}

我应该使用什么Java数据结构来存储此类的对象?我希望它能够通过标题搜索对象。例如,如果我搜索“游戏”,程序应该返回标题中包含搜索词的书籍(例如“权力的游戏”、“某物的游戏”、“游戏 blabla”)。目前还没有必要使用多个字段。

还有比迭代对象更有效的方法吗?

我尝试使用 HashSet 和 TreeSet。但他们甚至没有 get() 方法。所以我认为它们不是合适的数据结构。

令我感兴趣的一件事是使用K-D 树。但这会引发类似的问题,因为 k-d 树不允许通过使用索引来获取对象。我需要索引,因为我还需要使这本书对象可编辑。 (我正在考虑通过其索引获取对象,然后更新其字段)。有解决这个问题的方法吗?如果我使用对象的 id 字段而不是索引,程序会高效吗?

java arrays search data-structures set
1个回答
0
投票

使用任何类型的列表来存储您的书籍对象。 然后流式传输该列表并使用过滤功能。在您的情况下,startsWith()应该可以很好地应用过滤器,您可能还需要根据您的要求使用LowerCase()/ toUpperCase()或ignoreCase()函数。最后,使用collect函数将其收集到列表中。

List<Item> booksHavingSameTitle= booksHavingSameTitle.stream()
    .filter(item -> item.title.startsWith("game"))
    .collect(Collectors.toList())
© www.soinside.com 2019 - 2024. All rights reserved.