ArrayList<String> myString = new ArrayList<String>();
myString.add("string_1");
myString.add("string_2");
ArrayList<String> yourString = new ArrayList<String>();
yourString.add("string_11");
yourString.add("string_12");
ArrayList<String> string1 = myString;
ArrayList<String> string2 = yourString;
这将浅层复制myString
至string1
和yourString
至string2
。
所以,如果我这样做
myString.add("string_3");
string1.size()
会给我3
如何将myString
和yourString
浅层复制到ArrayList中string3
(例如ArrayList<String> string3 = myString + yourString
)?
答案 0 :(得分:0)
为什么不维护三个列表,myString,yourString和ourString。
List<String> ourString = new ArrayList<String>();
ourString.addAll(myString);
ourString.addAll(yourString);
现在,您的string3数组可以引用此第三个列表。现在,无论何时更新myString或yourString,都可以相应地更新ourString(基本上,执行两个添加操作而不是一个,仍然是O(1),与执行深拷贝时的O(n)相比)。这也将根据需要更新string3。
答案 1 :(得分:0)
<强>已更新强>
这种方法会对你有所帮助!
public static ArrayList<String> cloneList(ArrayList<String> yourList) {
ArrayList<List> clonedList = new ArrayList<String>(yourList.size());
for (String s : yourList) {
clonedList.add(new String(""));
}
return clonedList;
}
这里有一些代码:ArrayList<String> shallow = new ArrayList(yourOriginalList);
答案 2 :(得分:0)
我能想到的唯一方法就是努力工作并编写一个ConcatList并实现List-Interface:
public class ConcatList<E> implements List<E> {
private List<E> head;
private List<E> tail;
public ConcatList(List<E> head, List<E> tail) {
super();
this.head = head;
this.tail = tail;
}
@Override
public int size() {
return head.size() + tail.size();
}
...
它没有ArrayList,但它可能是你想要的。