按索引获取项目

时间:2013-11-11 09:04:12

标签: java data-structures

在java中,按索引获取和设置项目的最佳数据结构是什么?

我最初使用的是ArrayList,但问题有时候,我需要插入一个大于arraylist大小的元素,如:

pseudocode
array = new ArrayList();
array.set(10, object);

显然这会返回错误。我可以使用sentinel值初始化数组,但使用:

array.size()

总是会说我的阵列充满了边缘。显然它只是充满了哨兵价值。

2 个答案:

答案 0 :(得分:3)

如果您始终知道要插入值的索引,那么通常可以使用Map接口的具体实现。

这组类的优点在于,通过索引(或此上下文中的Key)的知识,您可以在O(1)时间内直接从内存中检索对象。这意味着没有搜索。

例如:

Map<String, String> map = new HashMap<String, String>();

map.put("KEY", "VALUE");

String key = "KEY";

// Do some processing..

String value = map.get(key);

// value variable now contains "VALUE".

查看documentation,以便真正掌握如何使用这组课程。

答案 1 :(得分:0)

这取决于(通常......)。当你的索引在一定的合理范围内并且你将使用几乎所有的索引时,使用适当大小的数组:

Object[] items = new Object[MAX_INDEX];

如果您的范围更大并且不会使用许多阵列插槽,则可能需要Map(如其他答案中所述)。 HashMap是一种可能的实现方式:

Map<Integer, Object> items = new HashMap<Integer, Object>();
相关问题