我的问题可能听起来很愚蠢,但是想知道Java中是否有任何Collection对象在单个Collection对象中存储索引,键和值?
我有以下内容:
Enumeration hs = request.getParameterNames();
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
while (hs.hasMoreElements()) {
linkedHashMap.put(value, request.getParameter(value));
}
上面在linkedHashMap中存储键和值,但它没有索引。如果有,那么我可以通过索引(pos)调用并获得相应的键和值。
编辑1
我想条件检查索引(位置)是否为x,然后获取相应的键和值对,并构造一个带查询的字符串。
答案 0 :(得分:3)
正如其他人所说,Java集合不支持这一点。解决方法是Map<R, Map<C, V>>
。但它太难看了。
您可以使用 Guava 。它提供 Table 集合类型。它具有以下格式Table<R, C, V>
。我没试过,但我认为这对你有用。
Enumeration hs = request.getParameterNames();
Table<Integer, String, String> table = HashBasedTable.create();
while (hs.hasMoreElements()) {
table.put(index, value, request.getParameter(value));
}
现在,如果你想要键,值对,比方说,索引 1 。只做table.row(1)
。同样,要获取 index,值对只需执行table.column(value)
。
答案 1 :(得分:1)
java中没有Collection,会支持这个。 您需要创建一个继承HashMap的新类IndexedMap并将密钥对象存储到 arraylist通过重写put方法。
这是答案(由另一位用户回答:Adriaan Koster)
答案 2 :(得分:1)
也许您需要实现自己才能实现此功能。
public class Param{
private String key;
private String value;
public Param(String key, String value){
this.key = key;
this.value = value;
}
public void setKey(String key){
this.key = key;
}
public String getKey(){
return this.key;
}
public void setValue(String value){
this.value = value;
}
public String getValue(){
return this.value;
}
}
Enumeration hs = request.getParameterNames();
List<Param> list = new ArrayList<Param>();
while (hs.hasMoreElements()) {
String key = hs.nextElement();
list.add(new Param(key, request.getParameter(key)));
}
通过执行此操作,您可以使用List API提供的索引获取参数。