分类和复制对象是最好的方法吗?

时间:2011-12-03 19:56:59

标签: java arraylist

我决定做服务器端排序。我有一个带对象的HashMap(键是一个String,值是一个ItemDTO)。这些是在服务器启动时静态加载的。

对于每个具有大量项目的角色(CharacterDTO)(在本例中为ItemOnCharacterDTO),我需要能够对东西进行排序。所以我的客户端发送一个排序对象的请求以及一些过滤数据。我现在想做的是:

  1. 根据ItemOnCharacterDTOs
  2. 中保存的ID获取完整的ItemDTO
  3. 将这些ItemDTO添加到列表中
  4. 对该列表中的ItemDTO进行排序(可能使用比较器)
  5. 创建一个ID数组(它对应于排序后ItemDTO列表的顺序)
  6. 丢弃我之前创建的ItemDTO列表,因为我在排序后得到了正确的订单
  7. 我现在的问题是:在将ItemDTO添加到列表之前是否需要复制ItemDTO才能不干扰同时进行的多次排序?

    我确实在新创建的ItemDTO列表中更改了ItemDTO的顺序(上面的步骤2),但是我没有更改ItemDTO本身(因此它们是静态的,并且在我开头提到的HashMap中)。

    提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您只需要复制单个对象(如果它们是可变的),即如果它们可能以影响排序顺序或过滤的方式进行更改。在Java中,对象数组实际上是对堆上对象的引用数组,因此移动数组中的引用对底层对象没有影响。