![](/img/trans.png)
[英]Java/Android - Search ArrayList<HashMap<String, String>> for matching key -> value
[英]search string in HashMap combine ArrayList on android
我正在尝试listItem.indexOf(word.text)==-1找到我想要的字符串。
在单个ArrayList中使用indexOf函数可以正常工作。 但是在我使用HashMap结合ArrayList之后,indexOf函数似乎无法正常工作。
有什么办法吗? 谢谢!
ArrayList<HashMap<String, Object>> listItem= new ArrayList<HashMap<String,Object>>();
SimpleAdapter mSimpleAdapter = new SimpleAdapter(this,listItem, R.layout.item_main, new String[] {"ItemImage","ItemTitle", "ItemText"},
new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText});
if(listItem.indexOf(word.text)==-1){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.speak2);
map.put("ItemTitle", word.text);
map.put("ItemText", temp);
listItem.add(map);
}
我假设word.text
是一个字符串。 因此,您没有理由期望listItem.indexOf(word.text)
在包含HashMap
实例的List
中找到它。
看起来您正在将word.text
存储为列表中存储的HashMap的值之一。 要在包含此值的列表中搜索HashMap,您必须遍历列表中的所有Map,并且对于每个Map,遍历其所有值。
也许更好的数据结构是HashMap<String,HashMap<String, Object>
,其中键是从word.text
,值是您当前存储在列表中的HashMap。 这样,您可以将listItem.indexOf(word.text)
替换为mapItem.containsKey(word.text)
,这样效率更高,并且可以工作。
HashMap<String,HashMap<String, Object>> mapItem= new HashMap<String,HashMap<String,Object>>();
if(!mapItem.containsKey(word.text)){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.speak2);
map.put("ItemTitle", word.text);
map.put("ItemText", temp);
mapItem.put(word.text, map);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.