gpt4 book ai didi

java - HashMap 的 ArrayList 转为字符串,然后返回 HashMap 的 ArrayList

转载 作者:行者123 更新时间:2023-12-02 05:38:56 26 4
gpt4 key购买 nike

我有一个ArrayList<HashMap<String,String>>我正在使用 toString()方法存储在数据库中。

这是我用来存储它的代码 toString()到数据库(它有效):

    HashMap<String, String> commentsHash = null; 
ArrayList<HashMap<String, String>> test2 = new ArrayList<HashMap<String, String>>();

for (int i=0; i < test.size(); i++)
{
String timestamp = test.get(i).get("timestamp");
String last_name = test.get(i).get("last_name");
String first_name = test.get(i).get("first_name");
String comment = test.get(i).get("comment");

commentsHash = new HashMap<String, String>();

commentsHash.put("creation_timestamp", timestamp);
commentsHash.put("first_name", first_name);
commentsHash.put("last_name", last_name);
commentsHash.put("comment", comment);

test2.add(commentsHash);
}

dbHelper.addCommentsToMyLiPost(Integer.parseInt(sqlId), test2.toString());

这是我想用来将字符串转换为 HashMap<String, String> 的方法:

protected HashMap<String,String> convertToStringToHashMap(String text){
HashMap<String,String> data = new HashMap<String,String>();
Pattern p = Pattern.compile("[\\{\\}\\=\\, ]++");
String[] split = p.split(text);
for ( int i=1; i+2 <= split.length; i+=2 ){
data.put( split[i], split[i+1] );
}
return data;
}

我尝试在字符串上使用 .split(",") 将字符串拆分为 2 部分,但它不是返回两个部分,而是返回 8。

这是 toString() 的内容方法打印。它是 HashMap 的 ArrayList,我试图获取 ArrayList 内部的两个 HashMap。

[{comment=hello, last_name=u1, first_name=u1, creation_timestamp=1404938643772}, {comment=hello2, last_name=u2, first_name=u2, creation_timestamp=1404963221598}]

最佳答案

在convertToStringToHashMap中,当您将数据放入HashMap时,旧值将被替换,因为它们的每条记录都有相同的键,例如comment、last_name等。

    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;
}

这将返回一个 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}

关于java - HashMap 的 ArrayList 转为字符串,然后返回 HashMap 的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com