我有eb local run
//将100个SomePojo对象添加到列表中。 现在该列表有100个对象。
如果我再创建一个实例,如下所示:
List< SomePojo > firstList = new ArrayList< SomePojo >();
这里,SomePojo和SomeOtherPojo里面有相同的公共变量。 如何将firstList的内容复制到secondList? 有没有办法做到这一点?
任何帮助都将不胜感激。
答案 0 :(得分:1)
1。使用 Collections.copy()
将一个列表中的所有元素复制到另一个列表中。在操作之后,目标列表中每个复制元素的索引将与源列表中的索引相同。目标列表必须至少与源列表一样长。如果它更长,则目标列表中的其余元素不受影响。
public static <T> void copy(List<? super T> dest,
List<? extends T> src)
<强>参数强>:
dest - 目的地列表。
src - 源列表。
<强>抛出强>:
IndexOutOfBoundsException
- 如果目的地列表太小而无法包含整个源列表。
UnsupportedOperationException
- 如果目标列表的list-iterator不支持set操作。
示例代码
List< SomePojo > firstList = new ArrayList< SomePojo >();
List< SomeOtherPojo > secondList = new ArrayList< SomeOtherPojo >(firstList.size());
Collections.copy(secondList,firstList);
2。使用 ArrayList.addAll();
它将指定Collection c的所有元素添加到当前列表中。 将所有指定的元素添加到指定的集合中。
ArrayList<ChatDataModel> firstList = new ArrayList<>();
firstList.add(model);
firstList.add(model4);
firstList.add(model2);
firstList.add(model3);
ArrayList<ChatDataModel> secondList = new ArrayList<>(firstList.size());
secondList.addAll(firstList);
答案 1 :(得分:0)
java.util.ArrayList.addAll(Collection c)方法将指定集合中的所有元素按指定集合的迭代器返回的顺序附加到此列表的末尾。如果在操作正在进行时修改了指定的集合,则此操作的行为是未定义的(如果指定的集合是此列表,则表示此调用的行为未定义,并且此列表为非空)。
firstList.addAll(anotherListObjectWhoHasSamePojoType)
答案 2 :(得分:0)
是的,有办法。
firstArrayList.addAll((ArrayList<type>) secondArrayList.clone());
or
firstArrayList.addAll((ArrayList<type>) secondArrayList);
有关克隆与 addAll 之间差异的详细信息,请参阅link
答案 3 :(得分:0)
可以:
secondList.addAll(firstList);
如果SomePojo扩展了SomeOtherPojo
否则你需要 - 例如 - 在一个循环中将SomePojo转换为SomeOtherPojo,并使用一些简单的适配器类来复制&#34;相同的公共变量&#34;从SomePojo到SomeOtherPojo的新实例,然后将其添加到secondList。
使用反射得到更多通用解决方案是可能的。设置这个&#34;相同的公共变量&#34;。