【发布时间】:2015-07-10 01:32:33
【问题描述】:
所以我需要在两者之间做出选择
-
HashMap<String[], Object> HashMap<ArrayList<String>,Object>
我的输入参数是:ArrayList<String> in。
整个ArrayList<String> in 不能是键,因为它确实包含元素,这些元素不应该像数据库中的主键。我知道,传入的ArrayList<String> in 的第一个n 元素应该是主键。
哪个会更快?
场景:
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);
}
考虑:
- 哪个更快?缩短列表,还是复制到数组?
- 我想知道,哪个哈希(因为它是一个 HashMap)会更快。 ArrayList 或大小相等的数组的散列。还是没有任何区别?
【问题讨论】:
-
在
HashMap中使用容器作为键可能不是一个好主意。 -
为什么不是个好主意?
-
因为插入密钥后容器的内容可能会发生变化,而Java没有
const对象。 -
您可能会发现有用的 Guava Multimap
-
@Fede:有类似逆番石榴多重映射的东西吗?比如:一个值有多个键?
标签: java arrays string performance arraylist