你的位置:首页 > 软件开发 > 操作系统 > SharedPreferences 存List集合,模拟数据库,随时存取

SharedPreferences 存List集合,模拟数据库,随时存取

发布时间:2017-12-09 21:00:03
PS:SharedPreferences只要稍微学过一点就会用,他本身通过创建一个Editor对象,来存储提交,而editor可以存的格式为他里面可以存一个Set<String> Set<String> list=new HashSet<& ...

PS:SharedPreferences只要稍微学过一点就会用,他本身通过创建一个Editor对象,来存储提交,而editor可以存的格式为

SharedPreferences 存List集合,模拟数据库,随时存取

他里面可以存一个Set<String> 

 

Set<String> list=new HashSet<>();   list.add("111");    list.add("111");   editor.putStringSet(keyStr,list);

 

HashSet是Java中非常常用的数据结构对象,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key 。这里有hashset百度百科,不懂的可以看看https://baike.baidu.com/item/HashSet/8887897?fr=aladdin。

 

Set也是一个集合,但是该集合不能存重复的值,不像list集合那样常用,但是SP只能存放Set,不能直接存放List,但是我们可以把他转换成字符串,读取的时候把字符串再转变成List就可以,我之前参加国赛的时候,就会用到很多数据,之前都是写SQLite,但是SQLite不是很好管理,而且,存的东西非常少的时候,再写SQLite就感觉到没必要了,所以,就写了这样一个转换类。

写入:字符串-->List集合

读取:List集合-->字符串  

1:我写的是List<Object[]> ,只要是该形式,Object的长度是多少都行。(当然不能超过限制)

 

package day1.cn.ceshi001;import android.content.Context;import android.content.SharedPreferences;import android.util.Log;import java.util.ArrayList;import java.util.List;/** * Created by liuzhitong on 2017/6/6. * * @Author : liuzhitong * @Description : */public class ListOrStrTools { public Context context; public String spStr,keyStr; private final SharedPreferences sp1; private Object[] obj; public ListOrStrTools(Context context, String spStr, String keyStr) {  this.context = context;  this.spStr = spStr;  this.keyStr = keyStr;  sp1 = context.getSharedPreferences(spStr,0); } public void setData(List<Object[]> lis){  //存入之前要先把之前的数据拿出来  String str="";  String s=sp1.getString(keyStr,"404");  if(s.equals("404")){   Log.e("sp添加出错","404");  }  else{str+=s;}  if(lis.size()==0){   Log.e("sp----lis","0");  }  //转换List集合---->字符串  else{   for(int i=0;i<lis.size();i++){    //检测list<Object[]>中的object对象的长度    for(int j=0;j<lis.get(i).length;j++){     str+=lis.get(i)[j]+"[&]";    }    str+="[^]";   }   SharedPreferences.Editor editor=sp1.edit();   editor.putString(keyStr,str);   editor.commit();  } } public List<Object[]> getData(){  List<Object[]> li1=new ArrayList<>();  String s=sp1.getString(keyStr,"404");  if(s.equals("404")){   Log.e("读取出错","404");   return li1;  }  //字符串---->List集合  else{   String data1[]=s.split("\\[\\^\\]");   for(int i=0;i<data1.length;i++){    String da1[]=data1[i].split("\\[\\&\\]");    int num=da1.length;     obj = new Object[num];    for(int j=0;j<num;j++){     obj[j]=da1[j];    }    li1.add(obj);   }   return li1;  } }}

2:调用该类

ListOrStrTools listOrStrTools = new ListOrStrTools(this, "info", "li1");//参数分别是:this(本类上下文),模拟数据库名字,表名。想当于

sp1 = context.getSharedPreferences(spStr,0);

SharedPreferences 存List集合,模拟数据库,随时存取

 List<Object[]> li = new ArrayList<>();  for (int i = 0; i < 3; i++) {   objects = new Object[4];   objects[0] = i;   objects[1] = "11";   objects[2] = "22";   objects[3] = "333";   li.add(objects);  }  ListOrStrTools listOrStrTools = new ListOrStrTools(this, "info", "li1");  listOrStrTools.setData(li);  List<Object[]> list1 = listOrStrTools.getData();//取出数据,并返回一个list集合。  Log.e("ssss", list1.get(0)[3] + "");  for (int i = 0; i < list1.size(); i++) {//打印存入的集合   for (int j = 0; j < list1.get(i).length; j++) {    Log.e("sss", list1.get(i)[j] + "");   }  }

结果成功取出

SharedPreferences 存List集合,模拟数据库,随时存取

 

原标题:SharedPreferences 存List集合,模拟数据库,随时存取

关键词:数据库

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。