比较String数组中的项目与Hashmaps的ArrayList中的项目

时间:2015-04-10 02:47:57

标签: java loops arraylist hashmap

所以我有两个String数组:

String[] a = {"Tony", "33", "male", "New York"};
String[] b = {"John", "33", "male", "Chicago"};

然后我有一个HashMaps的ArrayList:

ArrayList<HashMap<String, String>> list =
[{"name": "John", "age": "33", "gender": "male", "city": "Chicago"}],
[{"name": "Tony", "Age": "33", "gender": "male", "city": "New York"}];

所以我从另一个方法得到数组a或b。我想比较字符串a或b中的'name'或索引0处的值与ArrayList中的'name'值相同,索引1处的字符串a或b值是'33'是相同的作为ArrayList中的'age'值等等。 我尝试过以下方法:

for(int i = 0; i <= list.size(); i++) {
    assertEquals(b[0], list.get(i).get("name"));
    assertEquals(b[1], list.get(i).get("age"));
    assertEquals(b[3], list.get(i).get("city"));
}

但问题是,它仅适用于其中一个字符串列表,即它只有在我首先获得字符串b时才有效,因为在i = 0时,ArrayList具有与字符串b相同的值。

1 个答案:

答案 0 :(得分:1)

String[] a = {"Tony", "33", "male", "New York"};

List<Map<String, String>> listOfMaps = ...;

boolean found = false;
for(final Map<String, String> map : listOfmaps) {
    if(a[0].equals(map.get("name"))
            && a[1].equals(map.get("age"))
            && a[2].equals(map.get("gender"))
            && a[3].equals(map.get("city"))) {
        found = true;
        break;
    }
}

if(!found) {
    // raise the alarm - nothing matched
}