Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将哈希映射的ArrayList转换为字符串,然后返回哈希映射的ArrayList_Java_Android - Fatal编程技术网

Java 将哈希映射的ArrayList转换为字符串,然后返回哈希映射的ArrayList

Java 将哈希映射的ArrayList转换为字符串,然后返回哈希映射的ArrayList,java,android,Java,Android,我有一个ArrayList,我正在使用toString()方法将其存储在数据库中 下面是我用来将其存储到数据库的代码toString()(它可以工作): 此程序将从数据库条目重新创建整个列表 Pattern firstPat = Pattern.compile("\\{.*?\\}"); Matcher firstMat = firstPat.matcher(text); ArrayList<HashMap<String, String>> lis

我有一个
ArrayList
,我正在使用
toString()
方法将其存储在数据库中

下面是我用来将其存储到数据库的代码
toString()
(它可以工作):


此程序将从数据库条目重新创建整个列表

    Pattern firstPat = Pattern.compile("\\{.*?\\}");
    Matcher firstMat = firstPat.matcher(text);
    ArrayList<HashMap<String, String>> list = new ArrayList<>();
    while(firstMat.find()){
        HashMap<String, String> map = new HashMap<>();
        String assignStrings = firstMat.group();
        String [] assignGroups = assignStrings.substring(1,assignStrings.length()-1).split("\\s*\\,\\s*");
        for(String assign:assignGroups){
            String [] parts = assign.split("\\=");
            map.put(parts[0], parts[1]);
        }
        list.add(map);
    }
    return list
Pattern firstPat=Pattern.compile(“\{.*.\}”);
Matcher firstMat=firstPat.Matcher(文本);
ArrayList=新建ArrayList();
while(firstMat.find()){
HashMap=newHashMap();
String assignStrings=firstMat.group();
String[]assignGroups=assignStrings.substring(1,assignStrings.length()-1)。拆分(“\\s*\\,\\s*”);
for(字符串分配:分配组){
String[]parts=assign.split(“\\=”);
映射放置(部分[0],部分[1]);
}
列表。添加(地图);
}
返回列表

在convertToStringToHashMap中,当您将数据放入HashMap时,旧值将被替换,因为它们对每个记录都有相同的键,例如注释、姓氏等

    public static Map<String, Map<String, String>> convertToStringToHashMap(String text)
{
    Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();

    Pattern p = Pattern.compile("[\\{\\}\\=\\, ]++");
    String[] split = p.split(text);

    Map<String, String> data = new HashMap<String, String>();
    int gap = 8;
    int key = 1;

    for (int i = 1; i + 2 <= split.length; i += 2)
    {
        data.put(split[i], split[i+1]);
        if((i + 1) % gap == 0)
        {
            map.put(String.valueOf(key++), data);
            data = new HashMap<String, String>();
            data.clear();
        }
    }

    return map;
}

为什么不创建一个保存commentsHash数据的类呢。这个类将有一个
toString
方法和一个constructor,它将负责从字符串到字符串的位。我想你的数据库也应该有一对多的注释。@ScaryWombat谢谢,没有想到你的字符串格式似乎与JSON非常接近,因此值得检查一些用java bean自动生成JSON的库(用JSON生成java对象)同意,为什么要重新发明序列化轮子?
[{comment=hello, last_name=u1, first_name=u1, creation_timestamp=1404938643772}, {comment=hello2, last_name=u2, first_name=u2, creation_timestamp=1404963221598}]
    Pattern firstPat = Pattern.compile("\\{.*?\\}");
    Matcher firstMat = firstPat.matcher(text);
    ArrayList<HashMap<String, String>> list = new ArrayList<>();
    while(firstMat.find()){
        HashMap<String, String> map = new HashMap<>();
        String assignStrings = firstMat.group();
        String [] assignGroups = assignStrings.substring(1,assignStrings.length()-1).split("\\s*\\,\\s*");
        for(String assign:assignGroups){
            String [] parts = assign.split("\\=");
            map.put(parts[0], parts[1]);
        }
        list.add(map);
    }
    return list
    public static Map<String, Map<String, String>> convertToStringToHashMap(String text)
{
    Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();

    Pattern p = Pattern.compile("[\\{\\}\\=\\, ]++");
    String[] split = p.split(text);

    Map<String, String> data = new HashMap<String, String>();
    int gap = 8;
    int key = 1;

    for (int i = 1; i + 2 <= split.length; i += 2)
    {
        data.put(split[i], split[i+1]);
        if((i + 1) % gap == 0)
        {
            map.put(String.valueOf(key++), data);
            data = new HashMap<String, String>();
            data.clear();
        }
    }

    return map;
}
2={first_name=u2, last_name=u2, comment=hello2, creation_timestamp=1404963221598}
1={first_name=u1, last_name=u1, comment=hello, creation_timestamp=1404938643772}