public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private HashMap<String,PeopleBean> map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button save_value = findViewById(R.id.save_value);
Button change_value = findViewById(R.id.change_value);
Button take_value = findViewById(R.id.take_value);
save_value.setOnClickListener(this);
change_value.setOnClickListener(this);
take_value.setOnClickListener(this);
//将hashmap存储,比如用sp来存储
map = new HashMap<>();
PeopleBean peopleBean1 = new PeopleBean("小明",19);
PeopleBean peopleBean2 = new PeopleBean("小红",18);
PeopleBean peopleBean3 = new PeopleBean("小张",18);
map.put("key1",peopleBean1);
map.put("key2",peopleBean2);
map.put("key3",peopleBean3);
}
//将 HashMap 用sp存储起来
private void saveHashMap(HashMap<String,PeopleBean> map){
Gson gson = new Gson();
String json = gson.toJson(map);
//步骤1:创建一个SharedPreferences对象
SharedPreferences sharedPreferences= getSharedPreferences("config", Context.MODE_PRIVATE);
//步骤2: 实例化SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
//步骤3:将获取过来的值放入文件
editor.putString("config",json);
editor.commit();
}
//将json格式的字符串从sp中取出来转化为hashMap
private HashMap<String,PeopleBean> getHashMap(){
SharedPreferences sharedPreferences= getSharedPreferences("config", Context .MODE_PRIVATE);
String json =sharedPreferences.getString("config","");
HashMap<String,PeopleBean> map;
Type type = new TypeToken<HashMap<String, PeopleBean>>(){}.getType();
Gson gson = new Gson();
map = gson.fromJson(json, type);
return map;
}
//改变其中一个值:比如 改变年龄
private void changeValue(String name,int age){
HashMap<String, PeopleBean> hashMap = getHashMap();
Collection<PeopleBean> values = hashMap.values();
for (PeopleBean bean : values) {
if (TextUtils.equals(bean.getName(),name)){
bean.setAge(age);
}
}
saveHashMap(hashMap);
};
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.save_value:
saveHashMap(map);
break;
case R.id.change_value:
changeValue("小明",30);
break;
case R.id.take_value:
HashMap<String, PeopleBean> hashMap = getHashMap();
break;
default:
break;
}
}
}