什么时候使用对象数组而不是 ArrayList<>?
When to use Arrays of Objects over ArrayList<>?
我不是问Arrays
和ArrayList<>
之间的区别,因为我"guess"我知道大部分,最重要的简要总结:
Arrays
的固定长度数据,ArrayList<>
的动态和自动增长大小
- 泛型的使用(
ArrayList<>
)
- 字符串基元(
Arrays of Objects
,但它不是我的主题,因为我正在谈论 Arrays of Objects
)
- 变量和方法命名的几个小差异:
length
、size()
、add()
所以,IMO 最重要的一点表明我们应该在对象数组上使用 ArrayList<>
,甚至 Array or List in Java. Which is faster? 的答案表明 ArrayList<>
更快或更建议!我可以轻松识别何时应该使用 ArrayList<>
但我看不到 Arrays of Objects
!
的任何特定用例
简而言之,什么时候应该使用Arrays of Objects
?
使用 Java 的现代集合库,您不再有任何理由在自己的代码中使用本机或原始数组:集合更灵活、更安全。您唯一需要处理原始数组的时间是当您被迫通过与您无法更改的接口集成时。这方面的一个例子是传递给 main
方法的参数。
在我看来,使用集合的第一大优势是您以后可以在不影响其他代码的情况下改变您对实现的想法。从 List<Integer>
切换到 Set<Integer>
比从 int[]
切换到 Set<Integer>
容易 很多。
数组至少有一项是泛型所没有的。他们在运行时有自己的类型。因此它们可以相互分配。如果您需要那种信息(例如,您创建了某种框架,通过反射分配不同类型的参数或试图找到方法签名的最佳匹配等),那么数组会更容易一些。但在常规开发列表中通常是更好的选择
如果您知道您将始终拥有一个固定的 length/size,那么使用固定长度的数组就有意义了。这使您可以封装您的意图。它更多的是设计决策而不是性能考虑。灵活性并不总是最好的解决方案。
因为Arrays
很简单。这取决于您的要求。当你
有固定长度的数据,无论是对象还是原始类型
只需要进行基本的set(store)和get(retrieve)操作
您首先想到的是 Arrays
而不是 ArrayList
。简单是不言自明的。
我不是问Arrays
和ArrayList<>
之间的区别,因为我"guess"我知道大部分,最重要的简要总结:
Arrays
的固定长度数据,ArrayList<>
的动态和自动增长大小
- 泛型的使用(
ArrayList<>
) - 字符串基元(
Arrays of Objects
,但它不是我的主题,因为我正在谈论Arrays of Objects
) - 变量和方法命名的几个小差异:
length
、size()
、add()
所以,IMO 最重要的一点表明我们应该在对象数组上使用 ArrayList<>
,甚至 Array or List in Java. Which is faster? 的答案表明 ArrayList<>
更快或更建议!我可以轻松识别何时应该使用 ArrayList<>
但我看不到 Arrays of Objects
!
简而言之,什么时候应该使用Arrays of Objects
?
使用 Java 的现代集合库,您不再有任何理由在自己的代码中使用本机或原始数组:集合更灵活、更安全。您唯一需要处理原始数组的时间是当您被迫通过与您无法更改的接口集成时。这方面的一个例子是传递给 main
方法的参数。
在我看来,使用集合的第一大优势是您以后可以在不影响其他代码的情况下改变您对实现的想法。从 List<Integer>
切换到 Set<Integer>
比从 int[]
切换到 Set<Integer>
容易 很多。
数组至少有一项是泛型所没有的。他们在运行时有自己的类型。因此它们可以相互分配。如果您需要那种信息(例如,您创建了某种框架,通过反射分配不同类型的参数或试图找到方法签名的最佳匹配等),那么数组会更容易一些。但在常规开发列表中通常是更好的选择
如果您知道您将始终拥有一个固定的 length/size,那么使用固定长度的数组就有意义了。这使您可以封装您的意图。它更多的是设计决策而不是性能考虑。灵活性并不总是最好的解决方案。
因为Arrays
很简单。这取决于您的要求。当你
有固定长度的数据,无论是对象还是原始类型
只需要进行基本的set(store)和get(retrieve)操作
您首先想到的是 Arrays
而不是 ArrayList
。简单是不言自明的。