Java 哪个收藏<;字符串>;使用逐字符输入搜索数据的步骤

Java 哪个收藏<;字符串>;使用逐字符输入搜索数据的步骤,java,collections,Java,Collections,我不确定这个问题是否是不言自明的,但我在一次采访中被问到这个问题 比如说,我们在UI中有一个输入框(比如名字),在DB中有一个表(比如用户)。有人来了,在那里写上“S”,然后给他一张以“S”开头的所有人的名单,作为提示。然后他在信中加上“A”,然后给他一张以“SA”开头的人名列表,依此类推。为了实现这一点,我们有JSP->Controller->Service->DAO->DB 因此,我们将整个数据保存在服务器的缓存中,或者在一个集合中的会话中,而不是一次又一次地访问数据库 那么,在这个场景中,

我不确定这个问题是否是不言自明的,但我在一次采访中被问到这个问题

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

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


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

我认为面试官可能想要的答案是
ConcurrentSkipListSet
。您可以在此处阅读,查看方法,并确定其是否满足要求。

对于con-currency,它们在多线程环境中似乎更有用。我们的目标是减少这里的迭代。我将如何跳转或到达以“S”开头的名称,然后以“SA”等开头的名称,然后获取它们。@Jaikrat-再看一次。提示:tailSet。但是如果集合不需要并发,那么TreeSet可以以相同的方式使用。是的,有点正确。我创建了一个程序并进行了测试。实际上,req是当有人输入“S”时发出的该集合应为我们提供仅以“S”开头的名称。但是tailSet()给了我们所有以“S”、“T”、“U”…“Z”开头的名字。但是是的,它确实跳过了以A,B…R开头的名字。谢谢你。