首页 > 试题广场 >

Java集合类框架的最佳实践有哪些?

[问答题]
Java集合类框架的最佳实践有哪些?
根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元素的数量是固定的,而且能事先知道,我们就应该用Array而不是ArrayList。
有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。
为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。
使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。
编程的时候接口优于实现。
底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null
发表于 2019-04-27 20:59:14 回复(0)
更多回答
发表于 2018-05-26 19:58:52 回复(16)
Java集合类框架的最佳实践有哪些? 一开始还在想,难道有什么经典的算法或者什么方法理论,称之为最佳实践。看了答案才知道是怎么去选择一个合适的集合类框架。 那么,首先选一个适合的。比如固定那就选不拓展,插入频繁就链表,查询频繁就数组。不知道这个答案可以不?
发表于 2016-09-05 16:36:40 回复(3)
根据应用的需要合理的选择集合的类型对性能非常重要
  1. 假如元素的大小是固定的,而且能事先知道,我们就该用Array而不是ArrayList.
  2. 有些集合类允许指定初始容量。因此,如果我们能估计出存储元素的数目,我们可以设置初始容量来避免重新计算hash值或者扩容.
  3. 为了类型安全,可读性和健壮性的原因总要使用翻新。同时,使用泛型还能皮面运行时的ClassCastException.
  4. 使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。
  5. 编程的时候接口优于实现。
  6. 底层的集合实际上是空的情况下返回长度是0的集合或者是数组,不要返回null.
发表于 2016-03-17 22:26:36 回复(1)

长度固定用array,不固定用arraylist,插入频繁用linklist,尽量用不变类作为map的键。

发表于 2020-03-02 21:36:58 回复(0)
接口优于实现类吗?
发表于 2021-05-21 08:22:52 回复(0)
根据不同的需求选择不同的类型应用。比如预知数组的长度,那就用数组而不是ArrayList。对于查询频繁的数据集,用数组。对于插入删除频繁的数据集,用链表
发表于 2020-08-15 13:51:31 回复(0)
ClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。
发表于 2020-06-12 08:23:06 回复(0)
array基本/引用+长度固定 Map键值对 hashmap无序,不同步 treemap有序,同步 collection arraylist有序可重复不同步 linkedlist有序可重复同步 hashset无序不可重复不可排序 treeset无序不可重复可排序
编辑于 2019-11-20 20:08:28 回复(0)

长度固定用Array

不确定用ArrayList

增删频繁用LinkedList

查询多用ArrayList


发表于 2019-09-25 11:49:19 回复(1)

根据不同的需求选择不同的类型应用。比如预知数组的长度,那就用list而不是ArrayList。对于查询频繁的数据集,用数组。对于插入删除频繁的数据集,用链表


发表于 2019-09-15 23:13:09 回复(0)

Array List 我们可以设置初始容量

使用jdk提供的不变类作为Map的键

发表于 2019-04-26 22:24:41 回复(0)
根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元素的数量是固定的,而且能事先知道,我们就应该用Array而不是ArrayList。 有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。 为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。 使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。 编程的时候接口优于实现。 底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null。
发表于 2019-04-25 18:36:54 回复(0)
首先根据数据量来做选择,数据量大对查询速度要求高可以用哈希表,如果对查询速度要求不高且根据关键字随机分部就使用二叉树,不是就使平衡树(说远了😂😂。数据量小可预知查询速度快用Array或者有序数组,数据量不可预知要求插入速度快就用ArryList或无序数组。(有问题的地方求指正☺☺☺)
发表于 2018-06-10 15:30:43 回复(0)
根据应用的需要选择合适的集合对性能是非常重要的。如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList。 每个集合都可以设置初始容量,如果我们提前能够估算出它的初始容量,那么就可以避免重新计算它的hash值与扩容。 为了保证程序的类型安全、健壮性与可读性,一般我们都需要使用泛型。泛型可以避免运行时的ClassCastException。同时如果使用不可变类作为map的键,那么可以避免为我们自己实现的类实现equals()与hashcode()方法。 编程的时候接口优于实现。 如果底层的集合为空,返回的集合要为长度为0的集合或者数组,不能为空。 总而言之一句话,如果频繁用于查找,则用数组类型的集合,如果频繁用于删除,则使用链表类型的集合
编辑于 2018-05-06 10:13:38 回复(0)
如果已知元素的大小固定则优先选择array而不是list;
有些集合类可以初始集合大小,在已知元素个数的情况下可以线设置集合大小避免计算hash值
最好用不变类作为map的键值避免自定义类需要实现hashcode方法和equals方法
编程的时候接口优于实现
底层的集合实际上是空的情况下返回长度是0的集合或数组不要返回null
发表于 2018-03-14 14:51:35 回复(0)
immutable
发表于 2018-03-12 15:03:39 回复(0)
1.假如元素的大小是固定的,而且能事先知道,我们就应该用Array而不是ArrayList。
2.有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。
3.为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。
4.使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。
5.编程的时候接口优于实现。
6.底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null。
补充。
发表于 2017-03-27 14:43:23 回复(0)
http://blog.csdn.net/frankpi/article/details/46844115
发表于 2017-02-27 11:18:02 回复(0)
根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元素的大小是固定的,而且能事先知道,我们就应该用Array而不是ArrayList。
有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。
为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。
使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。
编程的时候接口优于实现。
底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null。
发表于 2015-10-29 12:10:41 回复(0)