【发布时间】:2022-01-25 11:11:31
【问题描述】:
您好,我有以下代码
public static LinkedHashMap<Object, String[]> dataMap = new LinkedHashMap<>();
public static void parseDataset(int line){
String[] dataArr = dataMap.get(dataMap.keySet().toArray()[line]);
}
由于我用作 Key 的 Object 是动态生成的,我对此一无所知,所以我必须先找到它,然后才能使用它来获取它的值。
此代码向我发出警告Suspicious call to 'LinkedHashMap.get',这是个问题吗?我该如何消除警告?
【问题讨论】:
-
Since the Object I use as a Key is dynamically generated I have no knowledge about it- 如果您对此一无所知,您怎么知道它正确地覆盖了equals和hashCode?如果不是,则不应将其用作HashMap中的键。 -
@Eran 对于代码的这个特定部分,我并不总是了解它,我确实为我的代码的不同部分覆盖了 equals 和 hashcode。
-
只是为了回答 为什么会有问题? 因为
LinkedHashMap.get()的复杂度是 O(n),而其他实现的复杂度是 O(1) 或 O(log(n)) .
标签: java hashmap linkedhashmap