2010-05-21 134 views
0

我需要一個UserProfile類,它就是這樣一個用戶配置文件。這個用戶配置文件當然有一些重要的用戶數據,但它也需要有用戶朋友發送的消息列表。如何在Java中使用動態數據類型的變量?

我需要保存這些消息在LinkedList,ArrayList,HashMapTreeMap。但是每次只有一個,並且不會爲每個數據結構複製消息。基本上,就像動態變量類型,我可以選擇消息的數據類型。

這是,在某種程度上,可能在Java?或者我最好的方法是like this?我的意思是,有兩個不同的類別(用戶配置文件),一個我主持郵件爲Map<K,V>(然後我使用HashMapTreeMap在適當情況下)和另一個類別,我將它們作爲List<E>(然後我使用LinkedListArrayList在適當的地方)。並可能使用超級類的UserProfile,所以我不必重複像數據,年齡,地址等字段的變量和方法...

任何想法?

+0

是否有你需要存儲一個理由他們在不同的數據結構? – 2010-05-21 12:46:02

+0

是的,請在下面閱讀我的評論給PéterTörök的回答。 – 2010-05-21 14:09:23

回答

0

最後我用我的第一篇文章中描述:

是這樣的,不知何故,可能在Java中?或者 我最好的辦法就是像 這樣的東西?我的意思是,有2個不同類別 (用戶配置文件),一個在那裏我 舉辦的消息如地圖(和 然後我用的HashMap和TreeMap其中 適當地)和其他類,其中 我收留他們的名單(再我使用 LinkedList和ArrayList,其中 適當)。大概用 超類的用戶配置,所以我 不必重複變量和方法 像數據,年齡, 地址等領域...

1

首先,您不是通過將消息同時添加到不同的收藏夾來複制郵件 - 您只將不同的參考存儲到同一個對象。 (好吧,除非郵件被表示爲像long這樣的原始類型...但是無論如何都不能將這些郵件添加到收藏夾中。)

爲什麼你不能在同一個UserProfile中擁有所有這些集合?這將允許您通過鍵或索引訪問消息,並按照您喜歡的方式遍歷它們。

A LinkedHashMap對您來說也可能是一個有趣的選項,因爲它保證了迭代次序,所以它在某種程度上與List有關的迭代行爲,同時仍然是一個Map。最終,它歸結爲你想如何訪問給定用戶的消息,你還沒有詳細說明。

更新: @Snake,你只能存儲對Java集合中對象的引用。原始值long因此不能直接存儲,只能首先轉換爲對象。請注意,自從Java5以來,這種轉換可能由於自動裝箱而隱含,因此您不會在代碼中看到它,但仍會發生 - 例如,

List<Long> list = new ArrayList<Long>(); 
list.add(1L); // the primitive value is boxed into a Long object, 
       // which is then added to the list 
long value = list.get(0); // the value of the Long object in the list is outboxed 
          // and assigned to the primitive variable 
+0

爲什麼你不能創建一個長列表? – Snake 2010-05-21 13:04:51

+0

@Snake,看我的更新。 – 2010-05-21 13:14:22

+0

我不能做任何你說的話,因爲這不是我的選擇,這是我對這個大學項目的要求。我需要這些(和我剛纔提到的那些)不同的數據結構,因爲這個想法是衡量它們中每一個的性能。我可以輕鬆地爲每個人創建一個不同的課程,但如果可能的話,我想避免這樣做。 – 2010-05-21 14:08:17

0

如果這是一所大學的項目,那麼我懷疑你是什麼意思做的是:

Collection mycoll; 
mycoll = new ArrayList(); 
for (Message m:message) { 
    // do stuff and measure the performance 
} 
// do other stuff and measure the performance 
mycoll = new LinkedList(); 
// do the same stuff as a above and measure the performance again 
mycoll = new HashMap(); 
//... and so on 

如上所述,添加對象到集合不會複製它。

+0

我需要爲用戶配置文件設置一個類,並且該消息需要在該類內部。我的意思是「複製」是讓用戶配置文件類具有4個私有變量(每個數據結構一個),我只想擁有一個(最多2個,用於Map和List)並從那裏開始工作。 – 2010-05-21 14:49:35

相關問題