一种替代 ArrayMap 的方案是使用 LinkedHashMap。LinkedHashMap 继承自 HashMap,它保持了插入顺序。
下面是一个示例代码:
import java.util.LinkedHashMap;
import java.util.Map;
public class MyMap {
private Map map;
public MyMap() {
map = new LinkedHashMap<>();
}
public void put(K key, V value) {
map.put(key, value);
}
public V get(K key) {
return map.get(key);
}
public V valueAt(int index) {
if (index < 0 || index >= map.size()) {
throw new IndexOutOfBoundsException("Invalid index");
}
int i = 0;
for (V value : map.values()) {
if (i == index) {
return value;
}
i++;
}
return null;
}
public static void main(String[] args) {
MyMap myMap = new MyMap<>();
myMap.put("A", 1);
myMap.put("B", 2);
myMap.put("C", 3);
System.out.println(myMap.get("B")); // 输出 2
System.out.println(myMap.valueAt(1)); // 输出 2
}
}
在这个示例中,我们使用 LinkedHashMap 来实现保持插入顺序的功能,并提供了 put()、get() 和 valueAt() 方法。在 valueAt() 方法中,我们遍历 LinkedHashMap 的值,通过索引来获取对应的值。注意,LinkedHashMap 中的元素是按照插入的顺序存储的,因此可以通过遍历来获取指定索引的值。
在 main() 方法中,我们创建了一个 MyMap 对象,并插入了三个键值对。然后我们使用 get() 方法来获取键为 "B" 的值,并使用 valueAt() 方法来获取索引为 1 的值。最后,我们打印输出结果。