2014-10-29 101 views
1

在我的代碼中,我有大約150個用戶的詳細信息保存或trivers許多時間。創建多個對象降低性能?

哪一個更好的方法:

將用戶詳細信息保存在列表或對象中;

Map<String, List<String>> users= new Map<String, List<String>>(); 
List<String> data = new ArrayList<String>(); 
data.add(Name); 
data.add(address); 
data.add(phone); 
users.put(userID,data); 

或者

Map<String, UserData> users= new Map<String, UserData>(); 

public class UserData { 
    Public String name; 
    Public String address; 
    Public String phone; 
    UserData(String name,String address,String phone){ 
     this.name=name; 
     this.address=address; 
     this.phone=phone; 
    } 
} 

UserData userData=new UserData("Name","ADD","123") ; 
users.put(userID,userData); 

請給我建議,如果任何其他更好的方法,我可以在我的代碼中使用。
對不起,對不起英語。

+2

第一個取決於將數據添加到列表中的順序。第二個更清潔。 – EpicPandaForce 2014-10-29 13:17:44

+0

你只能在第二個例子中創建一個對象 - 它不會有太大的區別,特別是對於這麼小的數字(150)。 – assylias 2014-10-29 13:20:27

+0

[項目55:明智地優化](http://homepages.dcc.ufmg.br/~rodolfo/dcc030-2-11/Effective%20Java%20Item%2055.htm) – zapl 2014-10-29 13:20:45

回答

5

Java是圍繞對象設計的,JVM可以很好地處理它們。

設計您的系統應該如何設計,使用經過驗證的OO設計最佳實踐。如果存在性能問題(很可能不存在),那麼當你遇到問題時就解決這個問題。

+2

準確。並用* real *,測量數據來處理它。如果你無法衡量它,你無法改善它。 – acdcjunior 2014-10-29 13:24:37

1

如果你有很多很多的細節設置爲一個對象,第二種方法是正確的。因爲這是告訴數據實際表示的唯一方式。

第一個是一個簡單的項目列表,您可以依賴某些數據位於某個位置的事實。但是,如果數據的一部分丟失了......那麼......你會插入null的嗎?不是存儲有意義數據的好方法。

創建具有多個屬性的類可能會在初始化時導致不一致的狀態。如果您依賴於每個屬性都在創建後設置並且在使用此類時某些屬性不爲null這一事實。

因此,我建議在這種情況下使用builder pattern