Java:是否应该始终将Array替换为ArrayList?

冰灼:

好吧,在我看来,ArrayLists可以使以后扩展代码变得更容易,因为它们可以增长,也可以简化泛型的使用。但是,对于多维数组,我发现标准数组对代码的可读性更好。

无论如何,是否有关于何时使用另一种的一些准则?例如,我要从函数(int[][]返回一个表,但我想知道返回a List<List<Integer>>或a 是否更好List<int[]>

mikera:

除非您有很强的理由,否则我建议对数组使用列表。

在某些特定情况下,您将希望使用数组(例如,当您实现自己的数据结构时,或者当您解决已被概要分析并确定为瓶颈的非常具体的性能要求时),但出于一般目的,列表是更方便,并为您提供更多使用方式上的灵活性。

只要有能力,我还建议对抽象(List)而不是具体类型(ArrayList)进行编程。同样,如果您将来决定更改实施细节,这将为您提供灵活性。

解决您的可读性问题:如果您具有复杂的结构(例如ArrayList的HashMaps的ArrayList),则可以考虑将此复杂性封装在类中和/或创建一些名称非常明确的函数来操纵该结构。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我是否应该始终将结构属性定义为可测试性的接口?

Django中是否有办法始终将特定字段CAST转换为VARCHAR?

iOS始终将NSString转换为NSDate

我们是否应该始终将对象设置回Install4j中的上下文?

如何始终将某个路径参数替换为node.js中的另一个值?

Spring Boot + Jackson-始终将日期转换为UTC

为什么始终将const char []转换为const char *?

是否应该始终在Java中使用接口声明变量?

您是否应该始终使用Java编写接口代码

Java线程ID是否应该始终从0开始?

PostgresQL:是否始终将整个事务写入复制插槽?

是否应始终将条件绑定用于使单元出队

是否应该始终在Java中保持实例变量始终初始化?

我的Arraylist始终由上一个索引值替换为Android Studio

我应该始终将ignore_user_abort设置为true吗?

身份主键是否应该始终非集群?

Impala CONV函数无法始终将BASE-16转换为BASE-2

如何创建xmlNode,当转换为JSON时将始终将其解析为数组

即使列仅包含整数,熊猫也始终将列强制转换为对象

您是否应该在Java中始终使用枚举而不是常量

在字节和字符串之间进行转换时,是否应该始终以Java明确提供编码?

在Java8中使用流时,是否应该始终检查Optional?

setText()方法是否始终将值设置为字符串?

对于PowerShell cmdlet,是否可以始终将脚本块传递给字符串参数?

是否应始终将括号放在三元运算符的周围?

始终将 strtok_s 的第一个参数保持为 NULL 是否正确?

是否可以从POM文件内部始终将-Djava.library.path传递给Maven测试?

是否应始终将LC_ALL = C用于非语言环境的特定操作?

当期望使用元组类型参数时,是否可以始终将列表类型用作函数参数?