gpt4 book ai didi

java - 列表与 map /字典

转载 作者:行者123 更新时间:2023-12-01 17:36:59 25 4
gpt4 key购买 nike

有时您会使用列表,无论是数组还是链接列表。在其他情况下,您会使用 Java 中的 Map、Dictionary 或其他类似的东西。

当映射提供完全相同的功能时,为什么要使用列表,即通过索引访问(在本例中为整数......)。

map 不应该总是优先于列表吗?我在这里想念什么?

最佳答案

this question 的重复项.

但是要给出针对您的问题的具体答案,请考虑使用 Map 结构来维护按整数索引的集合的效率。

考虑这段代码:

public void add(Map map, Object o) {
int index = map.size();
map.put(index, o);
}

public static void add(List list, Object o) {
list.add(o);
}

现在看看编译器将其变成了什么(使用 javap 或在 Eclipse 等 IDE 中打开类文件):

public void add(java.util.Map map, java.lang.Object o);
0 aload_1 [map]
1 invokeinterface java.util.Map.size() : int [16] [nargs: 1]
6 istore_3 [index]
7 aload_1 [map]
8 iload_3 [index]
9 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [22]
12 aload_2 [o]
13 invokeinterface java.util.Map.put(java.lang.Object, java.lang.Object) : java.lang.Object [28] [nargs: 3]
18 pop
19 return
Line numbers:
[pc: 0, line: 8]
[pc: 7, line: 9]
[pc: 19, line: 10]
Local variable table:
[pc: 0, pc: 20] local: this index: 0 type: MapListTest
[pc: 0, pc: 20] local: map index: 1 type: java.util.Map
[pc: 0, pc: 20] local: o index: 2 type: java.lang.Object
[pc: 7, pc: 20] local: index index: 3 type: int

// Method descriptor #38 (Ljava/util/List;Ljava/lang/Object;)V
// Stack: 2, Locals: 2
public static void add(java.util.List list, java.lang.Object o);
0 aload_0 [list]
1 aload_1 [o]
2 invokeinterface java.util.List.add(java.lang.Object) : boolean [39] [nargs: 2]
7 pop
8 return
Line numbers:
[pc: 0, line: 13]
[pc: 8, line: 14]
Local variable table:
[pc: 0, pc: 9] local: list index: 0 type: java.util.List
[pc: 0, pc: 9] local: o index: 1 type: java.lang.Object

将集合维护为列表比维护映射要少一些工作。因此,List 是一种更高效的数据结构。

关于java - 列表与 map /字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312984/

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