>> 对象1 这意味着索引 0(整数)和索引 a(字符串)取消引用数组中的同一对象。对于存储对-6ren">
gpt4 book ai didi

java - java中两种不同类型的索引数组

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

我需要一个数组类型来存储对象。但我需要两种类型的访问属性:

数组[0] >>> 对象1

数组["a"] >>> 对象1

这意味着索引 0(整数)和索引 a(字符串)取消引用数组中的同一对象。对于存储对象,我认为我们需要集合,但我怎样才能访问我上面提到的属性?

最佳答案

创建一个从字符串键到数字键的映射:

Map<String, Integer> keyMap = new HashMap<String, Integer>();
keyMap.put("a", o);
// etc

然后创建一个对象列表,其中 MyObject 是值类型:

List<MyObject> theList = new ArrayList<MyObject>();

整数访问:

MyObject obj = theList.get(0);

通过字符串访问

MyObject obj = theList.get(keyMap.get("a"));

这需要维护您的关键数据结构,但允许从一个数据结构访问您的值。

如果你愿意,你可以将它封装在一个类中:

public class IntAndStringMap<V> {
private Map<String, Integer> keyMap;

private List<V> theList;

public IntAndStringMap() {
keyMap = new HashMap<String, Integer>();
theList = new ArrayList<V>();
}

public void put(int intKey, String stringKey, V value) {
keyMap.put(stringKey, intKey);
theList.ensureCapacity(intKey + 1); // ensure no IndexOutOfBoundsException
theList.set(intKey, value);
}

public V get(int intKey) {
return theList.get(intKey);
}

public V get(String stringKey) {
return theList.get(keyMap.get(stringKey));
}
}

关于java - java中两种不同类型的索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717894/

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