我知道列表使Java中的事情变得更容易,而不是使用硬设置的数组(列表允许您随意添加/删除元素,并且它们可以自动调整大小,等等)。
我读过一些东西,建议在java中应该尽可能避免数组,因为它们根本不灵活(有时会施加奇怪的限制,例如如果您不知道数组需要的大小,等等)。
这是完全停止使用数组而只使用列表逻辑的“好实践”吗?我确信List类型比数组消耗更多的内存,因此具有更高的开销,但是这有意义吗?大多数列表都会在运行时被GC,如果它们被随意放置的话,所以也许这并不像我想的那么重要?
发布于 2013-03-22 01:50:47
我认为一个很好的经验法则是除非你需要一个Array
(出于内存/性能的原因),否则应该使用Lists
。否则,Lists
通常更容易维护,因此不太可能导致未来的错误。
List在自动扩展方面提供了更多的灵活性/功能,所以我建议使用List,除非您的内存非常紧张(无法承受List带来的开销),或者不介意在扩展/收缩时保持Array的大小。
尽量不要对代码进行过多的微观管理,而是专注于更易辨别和可读的组件。
发布于 2013-03-22 01:51:06
我不喜欢教条。了解规则;知道何时打破规则。
“从不”太强了,特别是当涉及到软件的时候。
Arrays
和Lists
都是GC的潜在目标,所以这是一件容易的事情。
是的,在开始之前,你必须知道数组的大小。对于你这样做的情况,它没有什么问题。
使用java.util.Collections
和java.util.Arrays
类可以很容易地根据需要来回切换。
发布于 2013-03-22 01:52:39
这取决于列表。LinkedList
可能只在需要时才占用空间,而ArrayList
通常会在达到其容量时极大地增加空间。在内部,ArrayList
是使用数组实现的,但它是一个始终大于所需大小的数组。然而,由于它存储的是引用,而不是对象,所以在大多数情况下,内存开销可以忽略不计,我相信这种便利是值得的。
https://stackoverflow.com/questions/15554612
复制相似问题