如何从存储在 Arraylist 中的 Hashmap 中搜索和提取值

0 java search android arraylist hashmap

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;
}
Run Code Online (Sandbox Code Playgroud)

我有一个ArrayList包含HashMaps, HashMap包含 4 个具有相应值的键。

  1. 姓名
  2. 网易
  3. 日期
  4. 时间

请帮我做“搜索并找到给定 cnic 中的所有HashMapsArrayList并将它们添加到新的ArrayList。新的ArrayList将拥有该 cnic 的所有记录。”

Dar*_*hta 5

以下是使用 Java 8 的方法stream

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());
Run Code Online (Sandbox Code Playgroud)

如果您想要不区分大小写的比较,您可以使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)