谁知道 什么时候 直接用数组 什么时候用 ArrayList 什么时候用cashTable
2个回答
展开全部
数组
数组时最简单的多对象存储结构了,它只能用于存储同一类型的对象,且其占用的空间大小需要预分配,不可更改。
ArrayList
众多集合类中的一个,是一种相对高级的数据结构,应该是链表这样的低级结构封装而成,它最大的特点就是能够动态的存储对象,其空间占用随着对象的增加而增加,对象的减少而减少,即动态分配空间。虽然能够带来内存分配的灵活性,但是却是以牺牲性能为代价的(内部需要大量的内存交换)。
此外ArrayList允许存储任何类型的对象,不过实质上只是将所有对象都转换为Object对象存储而已,取出时需要分别强制转换为各对象本来的类型才能使用。而且这种存储类型的灵活性导致了类型存储的不安全。
HashTable
这个也是集合类的一种。其特点是每一个存储项都是由键-值对组成的,不再是单一的一个对象。非常适合用于处理具有键-值对应这样的结构,比如城市与天气就是一个键值对,城市是键,天气是值,根据城市名就能找到对应的天气。注意这种查找不是遍历查找,而是散列查找,效率会很高。
所以,如果不是必要,或者集合里的对象数量不会发生大幅度的改变,就用普通数组处理,效率高一些,否则可以用ArrayList,灵活性比数组高得多。至于HashTable,其用途和ArrayList它们的差别还是很大的,看描述就知道怎么选择了。
另外,如果是C#的话,为了解决ArrayList、Stack等集合类结构的性能与类型安全弊端,又在其基础上支持了这些结构的泛型,感兴趣可以看一下。
数组时最简单的多对象存储结构了,它只能用于存储同一类型的对象,且其占用的空间大小需要预分配,不可更改。
ArrayList
众多集合类中的一个,是一种相对高级的数据结构,应该是链表这样的低级结构封装而成,它最大的特点就是能够动态的存储对象,其空间占用随着对象的增加而增加,对象的减少而减少,即动态分配空间。虽然能够带来内存分配的灵活性,但是却是以牺牲性能为代价的(内部需要大量的内存交换)。
此外ArrayList允许存储任何类型的对象,不过实质上只是将所有对象都转换为Object对象存储而已,取出时需要分别强制转换为各对象本来的类型才能使用。而且这种存储类型的灵活性导致了类型存储的不安全。
HashTable
这个也是集合类的一种。其特点是每一个存储项都是由键-值对组成的,不再是单一的一个对象。非常适合用于处理具有键-值对应这样的结构,比如城市与天气就是一个键值对,城市是键,天气是值,根据城市名就能找到对应的天气。注意这种查找不是遍历查找,而是散列查找,效率会很高。
所以,如果不是必要,或者集合里的对象数量不会发生大幅度的改变,就用普通数组处理,效率高一些,否则可以用ArrayList,灵活性比数组高得多。至于HashTable,其用途和ArrayList它们的差别还是很大的,看描述就知道怎么选择了。
另外,如果是C#的话,为了解决ArrayList、Stack等集合类结构的性能与类型安全弊端,又在其基础上支持了这些结构的泛型,感兴趣可以看一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询