HarmonyOS 鸿蒙Next关于容器类的问题
HarmonyOS 鸿蒙Next关于容器类的问题
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
}
let params = new HashMap<string, string | number | boolean | object>();
params.set(“action”, 111);
let list = new List<string>();
list.add(“1111”)
list.add(“2222”)
let list2 = new List<Person>();
let p = new Person(“1”);
list2.add§
list2.add(new Person(“2”))
问题1、JSON.stringify(params) 为什么输入是 {} ,而 JSON.stringify(list) 和 JSON.stringify(list2) 有值
问题2、
目前,list.has() 该API,判断元素是否存在于容器内,是根据地址值判断的。
常量字符串 list 的集合 ,可以直接使用 list.has(“1111”) 的方式,就可以。
list2.has§ 的结果为true, 而 list2.has(new Person(“1”)) 的结果为 false。
class中也没有提供 == 和 hashcode 的方法,如何让 name 成为判断元素是否存在容器的标准?
更多关于HarmonyOS 鸿蒙Next关于容器类的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
hashMap.forEach((value?: string, key?: string) => {
console.log(‘value:’ + value, ‘,key:’ + key);
});
在上述的list.has()中,如果查找的是基本类型如string,number等,可以类似于 ===,如果查找的是对象类型,比较的是引用是否相同, list2.has(new Person(“1”)),你在里面重新new了一个对象,地址不同,返回false
更多关于HarmonyOS 鸿蒙Next关于容器类的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS鸿蒙Next关于容器类的问题,以下是一些专业解答:
鸿蒙系统提供了丰富的容器类库,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack等,这些容器类实现了不同的数据结构和算法,以满足不同的存储和管理需求。
ArrayList和Vector都是基于数组实现的动态数组,支持动态扩容。ArrayList的初始容量为10,每次扩容为原始容量的1.5倍;而Vector的初始容量也为10,但每次扩容为原始容量的2倍。两者在性能上有所不同,Vector是线程安全的,但性能稍慢于ArrayList。
List和LinkedList都是链表结构,但List是单向链表,LinkedList是双向链表。LinkedList在头尾进行插入和删除操作时效率更高,而List则无法双向操作。
Deque和Queue都是队列结构,但Deque支持在两端进行插入和删除操作,而Queue只能在一端进行。Stack则是栈结构,遵循先进后出的规则。
如果在使用鸿蒙系统的容器类时遇到问题,建议查阅官方文档或相关资料,以确保正确使用容器类。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。