当前位置: 首页 > 知识库问答 >
问题:

显示hashmap的问题

陆卓
2023-03-14

我的应用程序:有两个活动,一个创建两个字符串(名称和消息),这两个字符串被保存到hashmap中,传输到JSON中,并保存在SharedPreference中。另一个活动获取这个SharedPreference,再次将其转移到hashmap中。然后地图被迭代器“读出”。

应该是:我的想法是,如果我多次执行这个过程,迭代器就会“读出”HashMap中的所有条目。

LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
    map.put(message, name);

    Gson gson = new Gson();
    String hashMapString = gson.toJson(map);

    SharedPreferences prefs = getSharedPreferences("SP", MODE_PRIVATE);
    prefs.edit().putString("hashString", hashMapString).apply();
Gson gson = new Gson();
        SharedPreferences prefs = getSharedPreferences("SP", MODE_PRIVATE);

        String storedHashMapString = prefs.getString("hashString", "Error");
        java.lang.reflect.Type type = new TypeToken<LinkedHashMap<String, String>>(){}.getType();
        LinkedHashMap<String, String> map = gson.fromJson(storedHashMapString, type);


    Iterator myIterator = map.keySet().iterator();
    while(myIterator.hasNext()) {
        String key=(String)myIterator.next();
        String value=(String)map.get(key);
        Toast.makeText(getApplicationContext(), "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
    }

共有1个答案

苏硕
2023-03-14

在这样做的时候

prefs.edit().putString("hashString", hashMapString).apply();

您只是保存了新创建的hashmap的值,但丢失了以前使用hashstring键保存的旧值

解决方案:获取旧值并将其与新值一起保存

 String allValues ="{"+((prefs.getString("hashString", "")+hashMapString)
                                  .replace("{","").replace("}",""))+"}";

然后稍后保存它

prefs.edit().putString("hashString", allValues).apply();
 类似资料:
  • 关于下面的代码,我有两个问题, 1.我在哈希图中有两次键“二”,打印时,“二”只显示一次。为什么它没有显示“二”两次? 2.如何选择性地显示键“二”?

  • 编辑:我已经回答了这个问题,代码已经被更改,所以它是可用的,请在您自己的项目中随意使用代码。你好,利亚姆 我目前正在LWJGL中进行3D模型渲染,我遇到了一个问题,当我运行程序时,显示会出现,并且一切都与模型无关。我测试了3D空间代码,绘制了一些随机点,我可以看到它们并四处走动,所以我的3D空间代码正在工作,但模型代码不行。 我的问题如下:我的显示代码有问题吗?还是我的模型加载代码有问题?下面是我

  • 如何在任何浏览器中显示创建的pdf? 当前的输出是这样的,基本上是原始的PDF: %PDF-1.4%2 0 obj<>流x+r 26 s 00 si 2 p 5 1 b 4>>>>/父3 0 r/mediabox[0 0 595 842]>>内dobj 1 0 obj<>内dobj 3 0 obj<>内dobj 5 0 obj<>内dobj 6 0 obj<>内dobj xref 0 7 000

  • 我有一个svg的xml代码,这段代码可以在edge、chrome浏览器正常打开并显示出svg绘制的内容,而当我用firefox打开的时候,页面却是一片空白,这是什么原因造成的以及如何修复使得firefox上也可以正常显示。 firefox的版本 edge上 firefox上

  • 我试图在matplotlib中绘制多条线。 我已经习惯了标签功能,但它没有显示它。 这是我的密码。 这是我的照片:

  • 以下样式为什么在一些如平板上这样显示,如何修复?为什么1,2,3这些序号好像都单独占一行了! 正常显示是这样: