2014-02-16 44 views
0

以下哪種添加到HashMap的方法更有效(考慮時間和空間效率)?將「新」置於put方法或使用中間變量更有效嗎?

方式1:

Music foo = new Music(Files.getMusic("bar/bold.mp3")); 
HashMap.put("rock", foo); 

方式2:

HashMap.put("rock", new Music(Files.getMusic("bar/bold.mp3"))); 
+1

完全相同。本地「臨時」變量在Java中基本上是「免費的」。所以第一個序列是首選,因爲它更易於閱讀和理解。 –

回答

1

兩者完全相同。運行時

new Music(Files.getMusic("bar/bold.mp3")); 

您在內存中創建一個對象,並返回對其的引用。無論您是否將該參考文件臨時存儲在foo中,然後將其傳遞到HashMap或沒有發生變化(即使這樣做,這也會被優化掉)。

+0

感謝您的解釋:)將在10分鐘內被接受。 – Israelg99

1

這是相同的。 Java對象通過引用傳遞,兩種情況下創建的對象數量完全相同。

+0

修復「通過引用」,我會刪除我的downvote。 –

+0

我會對自己保留個人意見,但[通常認爲Java是按值傳遞](http://stackoverflow.com/questions/40480/is-java-pass-by-reference)。 – Dukeling

+0

http://blog.aaronshaw.net/2014/02/13/java-is-always-pass-by-value/ – Aaron

相關問題