-4

我正在尝试制作一个副本列表方法作为这个 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 方法的问题,但我应该使用什么?

4

4 回答 4

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);
        }
    }
}

这是一个 for each 循环,它遍历您的 copy_from 列表中的每个元素并将其添加到您的 copy_to 列表中。

于 2013-07-09T19:23:24.717 回答
0

I assume that you don't want to copy elements that are already there. Then you can do it this way:

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);
        }
    }
}
于 2013-07-09T19:33:09.037 回答
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);
        }
  }
于 2013-07-09T19:29:16.783 回答
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);
    }

}
于 2013-07-09T19:30:13.153 回答