我正在尝试将复制列表方法设为这个Collections.copy(,);
我想让自己成为自己,所以我做了这个
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class NewMain {
public static void main(String[] args) {
String[] a1={"asdasd","sadasd","asdasd"};
List<String> l1= Arrays.asList(a1);
String[] a2=new String[3];
List<String> l2= Arrays.asList(a2);
copy(l1,l2);
}
public static void copy(List<String> copy_from,List<String> copy_to){
for(int i=0;i<=copy_from.size();i++){
System.out.print( copy_from.containsAll(copy_to));
}
}
}
我从containsAll方法知道问题,但我应该使用什么?
答案 0 :(得分:1)
for(int i=0;i<=copy_from.size();i++){
System.out.print( copy_from.containsAll(copy_to));
}
除了sysout
声明之外什么也没做。
你想要的东西是:
public static void copy(List<String> copy_from,List<String> copy_to){
if (copy_from.size() > copy_to.size())
throw new IndexOutOfBoundsException("Source does not fit in dest");
} else {
for(String toCopy : copy_from) {
copy_to.add(toCopy);
}
}
}
这是循环遍历copy_from列表中每个元素的每个循环,并将其添加到copy_to列表中。
答案 1 :(得分:0)
这应该假设copy_from和copy_to可以随着我们添加元素而增长。
public static void copy(List<String> copy_from,List<String> copy_to) throws Exception {
//handle exception according to your wish
if (copy_from !=null && copy_to == null) {
throw new Exception("Source is not empty by Destination is null");
}
for(String string : copy_from){
copy_to.add(string);
}
}
答案 2 :(得分:0)
这与Collections.copy
的行为方式相同。
public static void copy(List<String> copy_from,List<String> copy_to){
if (copy_to.size() < copy_from.size()) {
throw new IndexOutOfBoundsException("copy_to is too small.");
}
ListIterator<String> fromIter = copy_from.listIterator();
ListIterator<String> toIter = copy_to.listIterator();
while (fromIter.hasNext()) {
String next = fromIter.next();
toIter.next();
toIter.set(next);
}
}
答案 3 :(得分:0)
我假设您不想复制已存在的元素。 然后你就可以这样做:
public static void copy(List<String> copy_from,List<String> copy_to){
if(copy_to==null){throw Exception("copy_to can't be null!")}
//additional checks should be added
for(String elem : copy_from){
if(!copy_to.contains(elem)){
copy_to.add(elem);
}
}
}