如何克隆ArrayList并在Java中克隆其项目?
例如,我有:
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = ....something to do with dogs....
Run Code Online (Sandbox Code Playgroud)
我希望那些物品clonedList与狗列表中的物品不同.
是否有任何用于深度克隆java集合的实用程序:
注意:在不使用序列化的情况下更喜欢某些解决方案,但使用Object.clone()方法.我可以肯定我的自定义对象将实现clone()方法,并将只使用可克隆的java标准类...
我想使用Java 9中的新工厂方法创建一个不变的hashMap内联Map.ofEntries(),例如:
Map<Integer, String> map = Map.ofEntries(
Map.entry(1, "One"),
Map.entry(2, "Two"),
Map.entry(3, "Three"));
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我发现我无法以相同的方式创建不可变的hashMap!例如,以下代码将不起作用。
HashMap<Integer, String> map = HashMap.ofEntries( //not work
Map.entry(1, "One"),
Map.entry(2, "Two"),
Map.entry(3, "Three"));
Run Code Online (Sandbox Code Playgroud)
然后,当我想检查工厂方法返回的地图类型时,发现以下注意事项:
调用者不应对返回实例的身份做任何假设。
所以我的问题是,不可变映射的访问时间复杂度是否与o(1)的hashMap相同?如果不是,如何创建不可变且同时访问o(1)的映射?最好可以内联创建。
java ×3
clone ×2
collections ×1
deep-copy ×1
dictionary ×1
hashmap ×1
immutability ×1
java-9 ×1