小智 102
使用LinkedHashMap,当您需要按位置检索时,将值转换为ArrayList.
LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap<String,String>();
/* Populate */
linkedHashMap.put("key0","value0");
linkedHashMap.put("key1","value1");
linkedHashMap.put("key2","value2");
/* Get by position */
int pos = 1;
String value = (new ArrayList<String>(linkedHashMap.values())).get(pos);
Run Code Online (Sandbox Code Playgroud)
Way*_*ett 91
HashMaps不保留排序:
这个类不保证地图的顺序; 特别是,它不保证订单会随着时间的推移保持不变.
看看LinkedHashMap,它保证了可预测的迭代顺序.
小智 45
如果要维护将元素添加到地图的顺序,请使用LinkedHashMap而不是仅使用HashMap.
这是一种允许您通过地图中的索引获取值的方法:
public Object getElementByIndex(LinkedHashMap map,int index){
return map.get( (map.keySet().toArray())[ index ] );
}
Run Code Online (Sandbox Code Playgroud)
the*_*247 17
如果由于某种原因,您必须坚持使用hashMap,您可以将keySet转换为数组并索引数组中的键以获取地图中的值,如下所示:
Object[] keys = map.keySet().toArray();
Run Code Online (Sandbox Code Playgroud)
然后,您可以访问地图,如:
map.get(keys[i]);
Run Code Online (Sandbox Code Playgroud)
ila*_*lex 12
Map接口的哈希表和链表实现,具有可预测的迭代顺序.此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表.
使用LinkedHashMap并使用此功能.
private LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>();
Run Code Online (Sandbox Code Playgroud)
像这样定义和.
private Entry getEntry(int id){
Iterator iterator = map.entrySet().iterator();
int n = 0;
while(iterator.hasNext()){
Entry entry = (Entry) iterator.next();
if(n == id){
return entry;
}
n ++;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
该函数可以返回所选条目.
| 归档时间: |
|
| 查看次数: |
158042 次 |
| 最近记录: |