2013-06-04 21 views
2

簡而言之,我想知道在Java中使用ArrayList來保存包含大量數據的對象的有效性。 ArrayList可以增長多長時間,並且在運行時使用ArrayList保存2000多個客戶詳細信息(對象)時是否有任何問題?它是否以任何方式達到了性能?或者有沒有更好的方法來設計需要快速訪問數據的應用程序?Java應用程序/ ArrayList對直接數據庫查詢

我正在爲我的小型ERM應用程序開發一個新模塊(客戶主管跟蹤器),該模塊還處理公司的工資單詳細信息。到目前爲止,數據並不是那麼龐大,現在使用這個模塊我期望數據庫的增長速度很快,而且我將不得不從數據庫加載2000多個客戶詳細信息來執行不同的數據操作和更新。

我想要一些建議,以哪種方法會更好,

  1. 查詢客戶數據庫(100+列)和獲取數據與每個事務工作。 (每個單獨的查詢很多)

  2. 將每行加載到對象中,並將其保存在開頭的數組列表中,並在需要時使用該列表處理每行。並保存交易結束時的對象(行)?

很抱歉,如果我問一個問題,轉儲,我是一個真正的啓動獨立開發者這聽起來可能從一個有經驗的開發人員的角度有點尷尬。

+0

我很想知道,這個問題對Java Swing意味着什麼?我應該爲此開始一個新的線程? :-)雖然問題的精神問 –

+0

對不起,這個應用程序開發使用Java swing組件,通過這是超出了這個問題的範圍..謝謝 –

+0

也沒有轉儲的問題....只有答案可以轉儲;-) – Renjith

回答

2

取決於您擁有多少內存。爲每個事務查詢DB也不是一個好的方法。更好的方法是根據您的內存大小將數據加載到內存中,一旦完成,刪除它並激發下一組db查詢。在這種方式下,您可以優化內存以及db查詢。

+0

這正是我想的正確的方式是..謝謝..你會在實施這種方法的建議是什麼?我在想在內存中使用這些數據的最佳方式是什麼? (ArrayList爲我提供了迭代的靈活性,但不能完全確定這些缺點..) –

+1

ArrayList除了大小限制之外沒有任何缺點。您也可以使用不具有此大小限制的HashMap,您可以使用(primary鍵,對象)作爲鍵值對。 – Renjith

+0

我剛剛搜索了一下HashMap,看起來很有趣。謝謝你的輸入.. –

2
  1. 任何ArrayList可容納並不比2 -1元素,由於int類型內陣列的索引。

  2. 有一種方法叫in memory Db,這意味着你在內存中保存了大量的數據以便快速訪問它。但是這種方法也暗示着:

a。你有很多的內存,可用於保存所有必要的數據(可能是幾十千兆字節);

b。你的數據庫實現了緊湊的數據存儲形式。這意味着db不會包含準備好的java對象,而是包含字節數組數據的片段,您可以根據需要對其進行contstruct。

因此,您需要考慮的是,您需要爲要加載到內存中的所有數據分配多少內存,並決定此方法是否符合要求。

+0

很高興知道你建議的第二個選項。對於有問題的應用程序,我不認爲這些數據在不久的將來會變得如此之大,但是想知道如何實現這個..但是您有沒有可以學習的資源?謝謝你的回覆.. –

相關問題