【问题标题】:Which Collection<String> to use to search data with the character by character input哪个 Collection<String> 用于按字符输入搜索数据
【发布时间】:2015-04-05 09:15:43
【问题描述】:

不确定这个问题是否一目了然,但我在一次采访中被问到这个问题。

比方说,我们的 UI 中有一个输入框(说名字),我们在 DB 中有一个表(说用户)。有人来那里写“S”,他会得到一份以“S”开头的所有人的名字列表,作为提示。然后他在其中添加“A”,然后给他一个以“SA”开头的人名列表,依此类推。为了实现这一点,我们有我们的 JSP->Controller->Service->DAO->DB。

因此,我们不是一次又一次地访问数据库,而是将整个数据保存在服务器的缓存中或会话中的一个集合中。

那么我们应该在这个场景中使用哪个集合,在输入框的每个 onChange() 之后,我们从 Collection 中获取正确的数据并将其显示给用户?假设我们每个字符有数百万条数据。

【问题讨论】:

    标签: java collections


    【解决方案1】:

    我认为面试官可能正在寻找的答案是ConcurrentSkipListSet。您可以在这里阅读javadocs,查看方法,并确定它是否符合要求。

    【讨论】:

    • 看起来它们在多线程环境中对并发更有用。我们的目标是减少这里的迭代。我将如何跳转或到达以“S”开头然后是“SA”等等的名称,然后获取它们。
    • @Jaikrat - 再看一遍。提示:tailSet。但是如果集合不需要并发,那么可以以同样的方式使用 TreeSet。
    • 是的,有点真实。我创建了一个程序并进行了测试。实际上,req 是当有人输入“S”时,集合应该只给我们以“S”开头的名称。但是 tailSet() 给了我们所有以“S”、“T”、“U”...“Z”开头的名字。但是,是的,它确实跳过了以 A,B...R 开头的名称。谢谢你。
    猜你喜欢
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2019-04-09
    相关资源
    最近更新 更多