哪种类型的数据结构最好?

vik*_*368 2 java collections data-structures

在我的申请中,我们已经有了

Map<String, List<String>>
Run Code Online (Sandbox Code Playgroud)

现在我们得到了另一个用例,需要找到一个映射到列表中特定字符串的键.

我正在考虑写下面的内容:

string getKey(Map<String, List<String>> m, String str) {
  for (Entry<String, List<String>> entry :m.entrySet()) {
    if(entry.getValue().contains(str)) {
      retrun entry.getKey();
    }
  }
  return null;
}
Run Code Online (Sandbox Code Playgroud)

Map可以有最多2000个条目.每个List人最多可以有500 String秒.

任何可能更合适的建议?Map如果有更好的方法,我也可以更改初始数据结构().

izo*_*ica 5

我建议您添加另一个给出反向映射的映射 - 从字符串到键列表.这将需要更多的工作来与第一张地图保持同步,但会为您的任务提供最佳性能.

如果您认为此类查询的频率相对较低,那么您的解决方案可能会更好(尽管速度较慢,您为保持两个地图同步而节省的时间将弥补这一点).