HarmonyOS使用HashMap崩溃

使用HashMap后,应用启动崩溃。

场景描述:

1. 类中定义属性:private header = new HashMap<string, string>()。

2. 外部赋值:header[key] = value。

3. 启动崩溃。

把HashMap类型换成Map后不会启动崩溃,但是获取其forEach函数不执行,调试时data有值。

let data = NetConfig.getInstance().getHeaders() 
console.log(`${data}`) 
NetConfig.getInstance().getHeaders().forEach((k: string, v: string) => { 
  this.header.set(k, v) 
})
HarmonyOS
2024-08-27 14:04:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

1.当Map<string,CommonType>定义的map使用 params["lnt"] = "118.177704";方式赋值,这种方式本质上更像是 :Record<string,CommonType>,一个标准的JSON对象,而不再是map集合,也不可以转换成HashMap容器类并且使用map容器类的方法。

2.当HashMap<string,CommonType>定义的map(推荐定义为HashMap)使用sendParams.set("lnt","118.177704"); 方式赋值,这个就是标准的map容器类,也可以使用HashMap集合的迭代器遍历。

3.当HashMap集合必须使用JSON字符串传递出去时,推荐可以转换成Record对象,然后转换成JSON字符串传递。

//遍历map集合,并且生成一个Record对象(对应JAVA中JSONObject,可转换成类似于JSON串或者JSON对象的操作) 
mapIterator(map:HashMap<string, string|number>){ 
  let record:Record<string,string|number> = {}; 
  try { 
    let iter = map.keys(); 
    let temp: IteratorResult<string> = iter.next(); 
    while(!temp.done) { 
      let key = temp.value; 
      let value = map.get(key); 
      if(value){//简单判空。可不要 
        record[key] = value 
      } 
      temp = iter.next(); 
    } 
  }catch (err){ 
    console.log(err); 
  } 
  return record; 
}
分享
微博
QQ
微信
回复
2024-08-27 19:10:32
相关问题
HarmonyOS线程池使用崩溃
137浏览 • 1回复 待解决
HarmonyOS Record HashMap map类型选择
141浏览 • 2回复 待解决
HarmonyOS模拟器上使用libjsvm.so崩溃
64浏览 • 1回复 待解决
HarmonyOS HashMap 存各种类型数据的示例
180浏览 • 1回复 待解决
HarmonyOS API调用崩溃问题
143浏览 • 1回复 待解决
router传递hashmap参数问题
1332浏览 • 1回复 待解决
HarmonyOS 崩溃收集问题咨询
158浏览 • 1回复 待解决
使用hiappevent获取崩溃日志的示例代码
1556浏览 • 1回复 待解决
arkts侧hashmap转为native侧
695浏览 • 1回复 待解决
HarmonyOS APP_INPUT_BLOCK崩溃
233浏览 • 1回复 待解决
HarmonyOS 接入崩溃服务-异常问题
143浏览 • 1回复 待解决
HarmonyOS 如何导出应用崩溃日志
115浏览 • 1回复 待解决
HarmonyOS 用户崩溃是否能共享
126浏览 • 1回复 待解决
解决hashmap通过key取不到value
752浏览 • 1回复 待解决
如何将Map/HashMap转为Object对象?
1210浏览 • 1回复 待解决