亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組或列表在Java中。哪個更快?

數組或列表在Java中。哪個更快?

喵喵時光機 2019-06-20 16:25:49
數組或列表在Java中。哪個更快?我必須將數千個字符串保存在內存中,才能在Java中進行串行訪問。我應該將它們存儲在數組中,還是應該使用某種列表?由于數組將所有數據保存在一個連續的內存塊中(與列表不同),使用數組存儲數千個字符串會導致問題嗎?
查看完整描述

4 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

我建議您使用分析器來測試哪個更快。

我個人的看法是你應該使用列表。

我處理一個大型代碼庫,之前的一組開發人員使用數組。處處..這使得代碼變得非常不靈活。在將它的大塊更改為列表后,我們注意到速度沒有差別。


查看完整回答
反對 回復 2019-06-20
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

Java的方法是,您應該考慮哪些數據抽象化最適合你的需要。請記住,在Java中,列表是抽象的,而不是具體的數據類型。應該將字符串聲明為列表,然后使用ArrayList實現對其進行初始化。

List<String> strings = new ArrayList<String>();

抽象數據類型和具體實現的分離是面向對象編程的一個關鍵方面。

ArrayList使用數組作為基礎實現列表抽象數據類型。訪問速度實際上與數組相同,它的其他優點是能夠向列表中添加和減去元素(盡管這是一個帶有ArrayList的O(N)操作),如果您決定稍后更改基礎實現,則可以。例如,如果您意識到需要同步訪問,則可以將實現更改為Vectora,而無需重寫所有代碼。

事實上,ArrayList是專門為在大多數情況下替換低級數組構造而設計的。如果Java是今天設計的,那么數組完全有可能被完全排除在ArrayList構造之外。

由于數組將所有數據保存在一個連續的內存塊中(與列表不同),使用數組存儲數千個字符串會導致問題嗎?

在Java中,所有集合只存儲對象的引用,而不存儲對象本身。數組和ArrayList都將在一個連續數組中存儲幾千個引用,因此它們本質上是相同的。您可以認為,在現代硬件上,可以隨時使用幾千個32位引用的連續塊。這并不保證您不會完全耗盡內存,當然,只是內存要求的連續塊并不難完成。


查看完整回答
反對 回復 2019-06-20
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

與數組相比,您應該更喜歡泛型類型。正如其他人所提到的,數組是不靈活的,沒有泛型類型的表達能力。(不過,它們確實支持運行時鍵入,但這與泛型類型混在一起。)

但是,與往常一樣,在優化時,您應該始終遵循以下步驟:

  • 不要優化,直到你有一個好的,干凈的,和

    工作

    你代碼的版本。在這一步中,更改為泛型類型很有可能是有動機的。
  • 當你有一個好的和干凈的版本,決定它是否足夠快。
  • 如果不夠快,

    衡量其性能

    ..這一步之所以重要,有兩個原因。如果你不測量,你就不會(1)知道你所做的任何優化的影響,(2)知道在哪里進行優化。
  • 優化代碼中最熱門的部分。
  • 再量一次。

    這和以前的測量一樣重要。如果優化沒有改善,

    還原它

    ..記住,代碼

    優化是

    干凈,漂亮,工作。


查看完整回答
反對 回復 2019-06-20
  • 4 回答
  • 0 關注
  • 909 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號