gpt4 book ai didi

java - String[] 或 ArrayList 更适合作为 HashMap 中的 Key?

转载 作者:行者123 更新时间:2023-11-29 05:03:15 25 4
gpt4 key购买 nike

所以我需要在两者之间做出选择

  1. HashMap<String[], Object>
  2. HashMap<ArrayList<String>,Object>

我的输入参数是:ArrayList<String> in .

整体ArrayList<String> in不能是键,因为它确实包含元素,这些元素不应该像数据库中的主键。我知道,第一个 n元素传入ArrayList<String> in应该是主键

哪个会更快?

场景:

HashMap<ArrayList<String>, Object> hmAL = new HashMap<>();
HashMap<String[], Object> hmSA = new HashMap<>();
ArrayList<String> in = new ArrayList<>();
fillWithStuff(in);

//Which one would be faster?
getObject(in,hmAL,5);
getObject(in,hmSA,5);

选项 1:

private Object getObject(ArrayList<String> in, HashMap<ArrayList<String>, Object> hm, int n){
return hm.get(in.sublist(0,n));
}

使用选项 2:

private Object getObject(ArrayList<String> in, HashMap<String[], Object> hm, int n){
String[] temp = new String[n];
for(int i=0; i<n; i++)
temp[i]=in.get(i);

return hm.get(temp);
}

考虑:

  1. 哪个更快?缩短列表,还是复制到数组?
  2. 我在想,哪个散列(因为它是一个 HashMap)会更快。 ArrayList 或大小相等的数组的散列。还是没有任何区别?

最佳答案

使用 String[] 不是一个好主意,因为它没有实现 hashCode()。这意味着如果您有 2 个字符串数组,它们是不同的对象但具有完全相同的值, map 将找不到它。

“hashCode”的实现似乎使用了每个字符串元素哈希码,因此映射中的查找会成功。所以我会选择这个。

也就是说,我宁愿根据列表中的对象自己构建一个 key 。

关于java - String[] 或 ArrayList 更适合作为 HashMap 中的 Key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com