获取Java集合二进制搜索以返回多个值

Fle*_*515 0 java collections binary-search

我想知道是否有办法让Java中的二进制搜索返回值的多个实例.例如,我有一个Items的ArrayList,其中一个字段是一个String数组的关键字.有没有比使用contains()方法的线性搜索更快的方法来按关键字检索项目并将它们存储在单独的集合中?或者通过诸如作者之类的字符串?

...Item...
private String[] keywords;
private String author;
...
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

您几乎肯定希望对同一个集合有不同的看法.例如,您可以:

  • 一个List<Book>所有项目的
  • A Multimap<String, Book>用于"按作者"查找
  • A Multimap<String, Book>用于"按关键字"查找(同一本书可以出现在多个条目中)

如果我写这篇文章,Multimap可能会在Guava中实现,但也可以使用其他实现.

当然,这是假设你真的避免线性扫描.您的代码需要扩展多少?