繁体   English   中英

HashMap中的搜索字符串结合android上的ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM