我正在实现一个负责订购java.util.List的Java类。当我使用此类时,问题就来了。我可以订购列表,但我想复制“原始”列表而不作任何修改,这样我就可以在原始列表上注册所有更改。排序的列表包含对象,并且其字段之一存储分类ID,并使用列表的索引值更新此ID。
我尝试使用克隆方法,它使列表保持未排序状态,但原始列表上所做的更改也会在克隆列表中更新。
有什么办法可以做到?
我的代码:
List<Torero> listaTorero = tbTlgTorerolHome.findByExample(new Torero());
List<Torero> listaToreroTemp = ((List<Torero>) ((ArrayList<Torero>) listaTorero).clone());
Clasificacion clasificacion = new Clasificacion();
Iterator<Torero> iterTorero = clasificacion.getClasificacion(listaTorero, torero).iterator(); //Sorting List
分类法:
public List<Torero> getClasificacion(List<Torero> listaToreroTemp, Torero torero)
{
List<Torero> listaTorero = new ArrayList<Torero>();
Collections.sort(listaToreroTemp,new ToreroClasifiacionComparator());
Iterator<Torero> iterTorero = listaToreroTemp.iterator();
int index=1;
while(iterTorero.hasNext())
{
Torero toreroTemp = iterTorero.next();
toreroTemp.setNumClasificacion(index);
listaTorero.add(toreroTemp);
index=index+1;
}
return listaTorero;
}
您可以使用先前列表的输入来创建新列表,如下所示:
List one = new ArrayList()
//... add data, sort, etc
List two = new ArrayList(one);
这将使您可以独立于第一个列表修改顺序或包含哪些元素。
请记住,尽管两个列表将包含相同的对象,所以如果您在列表2中修改一个对象,则将在列表1中修改相同的对象。
例:
MyObject value1 = one.get(0);
MyObject value2 = two.get(0);
value1 == value2 //true
value1.setName("hello");
value2.getName(); //returns "hello"
编辑
为了避免这种情况,您需要像这样的列表中每个元素的深层副本:
List<Torero> one = new ArrayList<Torero>();
//add elements
List<Torero> two = new Arraylist<Torero>();
for(Torero t : one){
Torero copy = deepCopy(t);
two.add(copy);
}
复制如下:
public Torero deepCopy(Torero input){
Torero copy = new Torero();
copy.setValue(input.getValue());//.. copy primitives, deep copy objects again
return copy;
}
我有一个 。 我尝试使用,但我在代码的后面得到了一个。点击并试用。:) 不管怎样,我的问题很简单,我如何将我的列表的全部内容复制到另一个列表中?当然,不是通过迭代。
http://ehcache.org/generated/2.9.0/html/ehc-all/#page/ehcache_documentation_set%2fco-use_supported_types.html%23wwconnect_header EHCache2.9中的这篇文档说明它将支持RMI、JGroups和JMS。但是,很明显,Ehcache-2.9 JAR中的API已经改变,文
List是一个java集合,它按顺序存储元素并允许重复元素。 该界面的用户可以精确控制列表中的每个元素的插入位置。 用户可以通过整数索引访问元素,并搜索列表中的元素。 更正式地,列表通常允许元素对e1和e2成为e1.equals(e2),并且如果它们根本允许空元素,则它们通常允许多个空元素。 List与映射表中的元素映射,并使用java.util.ArrayList初始化。 定义RDBMS表 (D
使用C在同一台服务器上复制Mongodb中的集合的正确方法是什么?MongoVUE有一个选项“Duplicate collection”,C有类似的选项吗?
问题内容: 如何将Scala转换为Java ? 问题答案: Scala List和Java List是两种不同的野兽,因为前者是不可变的,而后者是可变的。因此,要从一个到另一个,首先必须将Scala列表转换为可变集合。 在Scala 2.7上: 从Scala 2.8开始: 但是,在该示例中,如果期望的类型是Java则没有必要,因为转换是隐式的,如最后一行所示。
问题内容: 有没有办法复制?也就是说,有可能去 还是您需要物理遍历这些集合并一一复制? 问题答案: 另一种方法是使用复制构造函数: 或创建一个空集并添加元素: 与这些不同,您可以使用不同的集合类,不同的比较器,甚至使用其他(非集合)集合类型填充。 请注意,复制a的结果是一个新的,包含对作为原始元素的对象的引用。元素对象本身不会被复制或克隆。这符合Java API设计的工作方式:它们不复制元素对象。