如何以智能的方式将Java.util.Map写入包中?

我有一个字符串(键、值)的通用映射,这个字段是Bean的一部分,我需要可以打包。
因此,我可以使用Parcel#writeMap方法。API文件说:

请改用writeBundle(Bundle)。将地图展平到包裹中
在当前dataPosition()处,如果需要,增加dataCapacity()。这个
映射键必须是字符串对象。映射值是使用
writeValue(对象),并且必须遵循其中的规范。它是
强烈建议使用writeBundle(Bundle)而不是此
方法,因为Bundle类提供了一个类型安全的API,允许
您需要避免编组时出现神秘的类型错误

因此,我可以迭代映射中的每个条目并将其放入包中,但我仍在寻找一种更聪明的方法。Android SDK中是否有我缺少的方法

目前我是这样做的:

最终捆绑=新捆绑();
最终迭代器<进入<字符串,字符串&gt&燃气轮机;iter=links.entrySet().iterator();
while(iter.hasNext())
{
最终条目<String,String>Entry=iter.next();
bundle.putString(entry.getKey(),entry.getValue());
}
包裹。写包(捆);

最后我做的有点不同。它遵循处理包裹时所期望的模式,因此应该很熟悉

公共无效写入包(包出,整型标志){
out.writeInt(map.size());
对于(Map.Entry<String,String>Entry:Map.entrySet()){
out.writeString(entry.getKey());
out.writeString(entry.getValue());
}
}
私人MyParcelable(包裹内){
//在之前初始化地图
int size=in.readInt();
对于(int i=0;i<size;i++){
String key=in.readString();
字符串值=in.readString();
map.put(键、值);
}
}

在我的应用程序中,关键点在地图中的顺序很重要。我使用了一个LinkedHashMap来保存顺序,这样做可以保证从包裹中提取钥匙后,钥匙会以相同的顺序出现

发表评论