如何从存储在数组列表中的哈希图中搜索和提取值


List<Map<String, String>> personList = new ArrayList<HashMap<String, String>> ();
String tempcnic = SBox.getText().toString();
HashMap<String,String> temp = new HashMap<>();
for (int i = 0; i < personlistcopy.size(); i++) {
temp = personlistcopy.get(i);
if (temp.get(TAG_CNIC) == tempcnic) {
Toast.makeText(History.this, temp.get(TAG_CNIC), Toast.LENGTH_SHORT).show();
personList2.add(temp);
}
temp = null;
}

我有一个包含HashMaps 的ArrayListHashMap包含 4 个具有相应值的键。

  1. 名字
  2. 中新
  3. 日期
  4. 时间

请帮助我做"使用给定的cnic搜索并找到ArrayList中的所有HashMap并将它们添加到新ArrayList中。新ArrayList将拥有该cnic的所有记录。

以下是使用 Java 8stream的方法:

List<Map<String, String>> personList = new ArrayList<>(); //Your list
List<Map<String,String>> filtered = personList.stream()
.filter(p -> "your_cnic".equals(p.get("cnic")))
.collect(Collectors.toList());

如果要不区分大小写的比较,可以使用equalsIgnoreCase而不是equals

以下是非流解决方案(适用于 Java 5、6 和 7(:

List<HashMap<String, String>> personList = new ArrayList<HashMap<String, String>>(); //Your list
List<HashMap<String,String>> filtered = new ArrayList<HashMap<String,String>>();
for(HashMap<String, String> person : personList){
if("your_cnic".equals(person.get("cnic"))){
filtered.add(person);
}
}

最新更新