Java 排序和复制对象是最好的方法吗?
我决定做服务器端排序。我有一个带有对象的HashMap(key是字符串,value是ItemDTO)。这些在服务器启动时静态加载 对于每个具有一定数量项(在本例中为ItemOnCharacterDTO)的字符(CharacterDTO),我需要能够对内容进行排序。因此,我的客户机发送了一个对对象进行排序的请求以及一些过滤数据。我现在想做的是:Java 排序和复制对象是最好的方法吗?,java,arraylist,Java,Arraylist,我决定做服务器端排序。我有一个带有对象的HashMap(key是字符串,value是ItemDTO)。这些在服务器启动时静态加载 对于每个具有一定数量项(在本例中为ItemOnCharacterDTO)的字符(CharacterDTO),我需要能够对内容进行排序。因此,我的客户机发送了一个对对象进行排序的请求以及一些过滤数据。我现在想做的是: 根据ItemOnCharacterDTOs中保存的ID获取完整的ItemDTOs 将这些项添加到列表中 对列表中的ItemDTOs进行排序(可能使用比较器
提前感谢您的帮助 如果单个对象是可变的,即它们可能会以影响排序顺序或筛选的方式更改,则只需复制它们。在Java中,对象数组实际上是堆上对象的引用数组,因此在数组中移动引用对底层对象没有影响。如果itemdto是不可变的,则无需复制它们。如果不是,那要看情况。你能和我分享一些代码吗?我觉得你考虑得太多了。ArrayList是对对象的T个引用。你在操作这些参考资料吗?如果你是,那么你可能想要一份。如果你只是在找订单,你很好。此外,如果您要访问服务器(并从服务器访问),您可能正在序列化对象,这相当于每次传输对象时的深度克隆。这一点可能没有意义。是的,ItemDTO和ItemOnCharacterDTO都是可序列化的。我也确信我不会更改ItemDTOs。但是:我可能会使用某种比较器(或比较接口),以便能够创建过滤设置指定的顺序(例如,按名称、类型、价格、所有者ID排序)。我不确定,但我认为大脑回答了我的问题:在数组中移动引用不会影响底层对象——这可能是我真正想知道的。我现在认为这个回答是正确的。非常感谢大家!你好我想这就是我想知道的。我不确定比较对象并在数组中移动它们是否意味着改变实际对象。