我有这个功能,在newList1
我想要在开头插入原始的l1
,newList2
和l2
也是如此。有什么建议我怎么做?
public static List subCombo(List l1, List l2)
{
List newList1= new LinkedList();
List newList2= new LinkedList();
List list1= new LinkedList();
while (!l1.isEmpty())
{
for (Object o: l2)
{
Double product=1.0;
if ((Double)hd(l1) == 0.0 && (Double)hd(l2)!=0.0)
{
product = (1-mySub(newList1))*(Double)hd(l2);
list1.add(product);
}
if ((Double)hd(l1)!=0.0 && (Double)hd(l2) == 0.0)
{
product= (1-mySub(newList2))*(Double) hd(l1);
list1.add(product);
}
if ((Double)hd(l2) == 0.0 && (Double)hd(l1)==0.0)
{
product= (1-mySub(newList1))*(1-mySub(newList2));
list1.add(product);
}
if ((Double)hd(l1) != 0.0 && (Double)hd(l2)!=0.0)
{
product=(Double)hd(l1)*(Double)hd(l2);
list1.add(product);
}
l2=tl(l2);
}
l1=tl(l1);
}
return list1;
}
答案 0 :(得分:1)
只要您不修改容器中包含的对象,您可以在修改之前复制列表:
List newList1 = new LinkedList(l1);
List newList2 = new LinkedList(l2);
否则,您需要制作列表的深层复制。 Example
答案 1 :(得分:0)
您只需将其传递到列表constructor中即可从任何其他集合创建列表(和其他类型的集合):
public static List subCombo(List<Double> l1, List<Double> l2)
{
// save a copy of the original "l1" list.
List<Double> savedList = new LinkedList<>( l1 );
// etc.
}
如果您必须构建列表然后复制它,还有addAll()
方法。
最后,您可以创建一个列表的unmodifiableList
副本,以确保它永远不会被更改:
List<Double> savedCopy = Collections.unmodifiableList( l1 );
...但这对于您可能会返回的列表更合适。