Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将2 ArrayList浅拷贝为1_Java_Android_Arraylist_Shallow Copy - Fatal编程技术网

在Java中将2 ArrayList浅拷贝为1

在Java中将2 ArrayList浅拷贝为1,java,android,arraylist,shallow-copy,Java,Android,Arraylist,Shallow Copy,string1.size()将为我提供3 如何将myString和yourString复制到一个数组列表中,比如string3(例如arrayliststring3=myString+yourString)?为什么不维护三个列表,myString、yourString和ourString myString.add("string_3"); List ourString=new ArrayList(); addAll(myString); addAll(yourString); 现在,您的st

string1.size()
将为我提供
3


如何将
myString
yourString
复制到一个数组列表中,比如
string3
(例如
arrayliststring3=myString+yourString
)?

为什么不维护三个列表,myString、yourString和ourString

myString.add("string_3");
List ourString=new ArrayList();
addAll(myString);
addAll(yourString);

现在,您的string3数组可以参考第三个列表。现在,无论何时更新myString或yourString,都可以相应地更新我们的String(基本上,执行两个add操作,而不是一个,这仍然是O(1),而执行深度复制时是O(n))。这也将根据需要更新string3。

为什么不维护三个列表,myString、yourString和ourString

myString.add("string_3");
List ourString=new ArrayList();
addAll(myString);
addAll(yourString);

现在,您的string3数组可以参考第三个列表。现在,无论何时更新myString或yourString,都可以相应地更新我们的String(基本上,执行两个add操作,而不是一个,这仍然是O(1),而执行深度复制时是O(n))。这也将根据需要更新string3。

已更新

这个方法对你有帮助

List<String> ourString = new ArrayList<String>();
ourString.addAll(myString);
ourString.addAll(yourString);
publicstaticarraylistclonelist(arraylistyourlist){
ArrayList clonedList=新的ArrayList(yourList.size());
for(字符串s:yourList){
添加(新字符串(“”);
}
返回克隆列表;
}

下面是一些代码:
ArrayList shallow=newarraylist(您的原始列表)

已更新

这个方法对你有帮助

List<String> ourString = new ArrayList<String>();
ourString.addAll(myString);
ourString.addAll(yourString);
publicstaticarraylistclonelist(arraylistyourlist){
ArrayList clonedList=新的ArrayList(yourList.size());
for(字符串s:yourList){
添加(新字符串(“”);
}
返回克隆列表;
}

下面是一些代码:
ArrayList shallow=newarraylist(您的原始列表)

我能想到的唯一方法是不遗余力地编写一个ConcatList并实现List接口:

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;
}
public类ConcatList实现列表{
私人名单负责人;
私有列表尾部;
公共列表(列表头、列表尾){
超级();
这个头=头;
this.tail=tail;
}
@凌驾
公共整数大小(){
返回head.size()+tail.size();
}
...

它不是ArrayList,但它可能是您想要的。

我能想到的唯一方法是不遗余力地编写一个ConcatList并实现List接口:

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;
}
public类ConcatList实现列表{
私人名单负责人;
私有列表尾部;
公共列表(列表头、列表尾){
超级();
这个头=头;
this.tail=tail;
}
@凌驾
公共整数大小(){
返回head.size()+tail.size();
}
...


它不是ArrayList,但它可能就是你想要的。

有可能吗?你不能用一个引用引用两个不同的对象为什么你需要这个引用?@Tony:我想跳过每次更新ListView时深度复制列表的痛苦。@YassinHajaj:我理解。有什么办法吗?我想跳过de的痛苦每次我更新我的列表视图时,ep都会复制列表。@Hemanth我认为你在这里没有选择…:有可能吗?你不能用一个引用引用两个不同的对象为什么你需要有那个引用?@Tony:我想跳过每次更新我的列表视图时深度复制列表的痛苦。@YassinHajaj:我明白。有什么办法吗在这里吗?我想跳过每次更新我的列表视图时深度复制列表的痛苦。@Hemanth我认为你在这里没有选择…:如果我做
myString.add(“string_3”);
然后
System.out.println(string3);
它仍然会打印
[string_1,string_2,string_11,string_12]
如果我做
myString.add怎么办(“string_3”);
然后
System.out.println(string3);
它仍然会打印
[string_1,string_2,string_11,string_12]
如果我做
myString.add(“string_3”);
它仍然会打印
[string_1,string_2,string_11,string_12]
这就是我所说的,你每次都必须执行“两个”添加操作。无论何时你添加到myString或yourString,你也必须添加到我们的String。这将比每次执行深度复制都要快。明白了。相反,我会领先于ArrayList。这比你的方法更快。你认为呢?如果你继续string3作为嵌套的arraylist,每当您希望对string3执行某些操作时(假设您在嵌套的arraylist中保留对myString和yourString的引用),都必须构造完整的arraylist。因此,它本质上是一个O(n)操作(假设两个数组都是等分的。如果其中一个数组总是非常小,比如说有1或2个元素,那么这将和我建议的一样快)如果我做
myString.add(“string_3”)
然后
System.out.println(string3);
它仍然会打印
[string_1,string_2,string_11,string_12]
这就是我所说的,你每次都必须执行“两个”添加操作。无论何时你添加到myString或yourString,你也必须添加到我们的String。这将比每次执行深度复制都要快。明白了。相反,我会领先于ArrayList。这比你的方法更快。你认为呢?如果你继续string3作为嵌套的arraylist,每当您希望对string3执行某些操作时(假设您在嵌套的arraylist中保留对myString和yourString的引用),都必须构造完整的arraylist。因此,它本质上是一个O(n)操作(假设两个数组都是等分的。如果其中一个数组总是非常小,比如1或2