如何将多个存储员工信息的HashMap存入同一个ArrayList集合
问题根因
你当前的代码每次新增员工时都会执行ArrayList<HashMap<String, String>> Employee = new ArrayList<>();逻辑,相当于每次都创建了一个全新的空ArrayList,自然只会保存当前最新的一条员工数据。
解决方案
核心修改逻辑
把存储员工的ArrayList提取为全局成员变量,只在类初始化的时候创建一次,后续每次新增员工时直接往已有的ArrayList里加数据即可,不要重复创建新的ArrayList。
代码示例(适配你当前的Android表单场景)
// 1. 在Activity/类的成员位置定义全局的员工列表,仅初始化一次 private ArrayList<HashMap<String, String>> employeeList = new ArrayList<>(); // 以下是表单提交触发逻辑,放在新增员工的按钮点击回调里即可 private void addEmployee() { String Nname = firstName.getText().toString(); String Lname = lastName.getText().toString(); String Mobile = mobile.getText().toString(); String EMail = email.getText().toString(); String DOB = dob.getText().toString(); String Addr = addr.getText().toString(); final HashMap<String,String> dictionary1 = new HashMap<>(); dictionary1.put("firstName",Nname); dictionary1.put("lastName",Lname); dictionary1.put("Mobile",Mobile); dictionary1.put("Email",EMail); dictionary1.put("DOB",DOB); dictionary1.put("Address",Addr); // 2. 直接往已存在的全局列表里添加数据,不要重复新建ArrayList employeeList.add(dictionary1); // 打印所有员工信息 System.out.println("Employee details" + employeeList); }
补充说明
- 如果需要跨页面保留员工数据,可以把这个ArrayList存到全局Application类、或是用SharedPreferences/本地数据库做持久化,避免页面销毁后数据丢失
- 建议单独定义
Employee实体类代替HashMap存储数据,类型更安全,后续扩展维护也更方便
内容的提问来源于stack exchange,提问作者Yogi
相关产品推荐
相关产品推荐

