我有一个在构造中获得物体清单的班子,List<Object>
。 每一次名单都可从不同类型中删除。 它具有某种通用性,我不知道其类别是什么。
在让用户改变其价值之前,我想自封这份清单。 但是,由于复印件是参考文件进行的,因此正在对两份清单(原始和复印件)进行修改。
How can I copy my list by value?
我有一个在构造中获得物体清单的班子,List<Object>
。 每一次名单都可从不同类型中删除。 它具有某种通用性,我不知道其类别是什么。
在让用户改变其价值之前,我想自封这份清单。 但是,由于复印件是参考文件进行的,因此正在对两份清单(原始和复印件)进行修改。
How can I copy my list by value?
Your question is not clear.
如果您希望有一份复印件(即一份清单的复印件,其中将提及原清单中的物体,则clone
。 工作方式,还有一份在<代码>上的复印件。 清单编码>执行类别。
如果你想得到一份深重的份数(即载有原标本的份数清单的影印件),那么,你的最佳要点就是制作一份新清单,并用原清单内容的印章。 然而,有一只鱼。 default/条形法没有规定。 很多共同用途类别是可布置的,按习俗分类,除非你执行。 如果你名单含有任何不可核查的物品,你在操作时将例外。
除<条码>clone外,还有其他深度的替代品,但就象克隆技术一样,这些替代品并不与所有类别合作。 事实上,如果你的解决办法必须是一般性的,那是问题的关键。
页: 1 清单编码>,然后在清单中添加每个内容的斜体。
List<Object> copy = new ArrayList<Object>(inputList.size());
for (Object item : inputList) {
copy.add(item.clone());
}
显然,你需要核实你名单上的物体为Cloneable
。 否则,他们获得的拖车是正确的。
通过通过通过名单并公布其内容,以建立一个新的清单,然后在不修改原始清单的情况下加以使用。
private List<Object> clone;
public Foo(List<Object> original)
{
this.clone = new ArrayList<Object>(list.size());
for(Object item: original)
{
clone.add(item.clone());
}
}
如果您的反对没有包含其他物体的任何提及,你可以使用目标,但如不使用,你需要做深刻的限定。
在这些情况下,有三种共同的解决办法:
(1) 如果你知道,每个要素有clone()方法,你打算使用这些方法,创造新的阵容,并填充相应的每一件。 作为umb,“基本”物体,如Stings、编号代表等,应处以罚款。 衣物的一个不利之处是,它带有松散的 can子:你不知道,如果某种特定类别的方法被压倒,那么 clo的深度如何,以及可能重新使用或不使用什么提法。 它还有一个特别的danger,即在其构造中依赖逻辑的可装饰物体的子类别,不得工作。 但正如我所说的那样,单纯的JDK物体应当被罚款。
(2) <>Serialise. list to an ObjectOutputStream Packped around a ByteArrayOutputStream. 接着将由此形成的星阵列,并包罗周围的拜特阿雷拉射线和物体发射器,并从中读出一份新的深厚的清单。
(3) 在理想世界中,制定一份新清单,填写在上,该清单明确创造了有关物体的“拷贝”。 如果这不过于繁琐,这是理想的解决办法,因为你知道实际上正在做些什么:就意外重新参照的物体而言,没有隐藏的意外事故,而不是因为如你所期望的那样,一种衣物(......)方法不奏效。
由于你有一个简单的集装箱物体(一个阵列清单),其结构可以轻而易举地重新计算,因此,(2)可能具有超高性能。 重组更复杂的结构是多余的。
请参看,特别是怀疑第三方图书馆的克隆物体:,其中考虑到这些物体的专有布条。 问题在于,人们很容易将JDK(可归结的)类或其它类装成衣。 在我的经验中,布莱恩()有一些微妙之处,即许多开发商不知道(例如,建筑商没有把新物体提上)这可能导致不可预见的问题。 因此,如果你实际上看不出可靠的来源代码,以确保衣物安全,我将避免。
Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...
Check this, List<String> list = new ArrayList<String>(); for (int i = 0; i < 10000; i++) { String value = (""+UUID.randomUUID().getLeastSignificantBits()).substring(3, ...
I am in the middle of solving a problem where I think it s best suited for a decorator and a state pattern. The high level setting is something like a sandwich maker and dispenser, where I have a set ...
I have been trying to execute a MS SQL Server stored procedure via JDBC today and have been unsuccessful thus far. The stored procedure has 1 input and 1 output parameter. With every combination I ...
I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...
If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...
I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....
I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...