2010-05-21 145 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

相关问题