我有hashmap和Arraylist。
的Hashmap
Map<Integer, List<String>> mMap = new HashMap<Integer, List<String>>();
这里Key(Interger)将是anotherlsit中一个元素的索引位置,value将是列表。
的ArrayList
List<testBean> mList= new ArrayList<testBean>();
现在我想迭代arraylist并将ArrayList中元素的索引位置与Map的键值进行比较。如果匹配,我会选择另一个逻辑。我在这里讨论了如何同时迭代和比较。请帮忙我就这个。
答案 0 :(得分:0)
为什么不迭代列表并使用map get:
for(int i = 0;i < mList.size();i++) {
List<String> list = mMap.get(i);
if (list == null) {
// index was a key in map
} else {
// index was not a key in map
}
}
严格地说,如果地图中的某个键映射到空值,则这不是100%正确。在这种情况下,您可以使用mMap.containsKey()
方法检查密钥在线状态。
答案 1 :(得分:0)
for(int i = 0;i < mList.size();i++) {
if(mMap.containsKey(mList.get(i)) {
// Put your logic here
}
}
答案 2 :(得分:0)
理论上你可以使用迭代器:
来做到这一点Iterator<TheBean> itb = mList.iterator();
Iterator<Entry<Integer, List<String>>> itmap = mMap.iterator();
while (itb.hasNext() && itmap.hasNext()) {
TheBean b = itb.next();
Entry<Integer, List<String>> e = itmap.next();
// do you logic that I IMHO do not understand exactly.
}
但是这不起作用,因为map不会保留键的顺序。所以,如果我理解列表的索引应该匹配map的键,你可以执行以下操作:
for (int i = 0; i < mList.size(); i++) {
TheBean b = mList.get(i);
List<String> listOfStrings = mMap.get(i);
if (listOfStrings != null) {
// implement your logic here.
}
}
我希望这会有所帮助
答案 3 :(得分:0)
尝试使用此逻辑
for (Integer mapKey : mMap.keySet()) {
//iterate through list
for (String listIndex : mMap.get(mapKey)) {
//compare the map key value with list value
if(listIndex != null && mapKey == Integer.valueOf(listIndex)){
//write your logic here
}
}
}