Java - 将数据从1个列表设置为另一个

时间:2015-11-20 22:34:43

标签: java

我的程序中有2个列表;其中一个已有数据。我需要创建一个新的List并从之前的列表中传递一些数据。

以下是我使用的代码:

List<Class1> result = function();
List<Class2> newList = new ArrayList<Class2>();

for(int i=0; i < result.size(); i++) {
     newList.get(i).setValue(result.get(i).getValue());
     //setValue() is setter function in Class2
     //getValue() is getter function in Class1
    }
  return newList;

当我尝试运行代码时,在此特定行中出现错误:

newList.get(i).setValue(result.get(i).getValue());

错误是:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.rangeCheck(ArrayList.java:635)
java.util.ArrayList.get(ArrayList.java:411)

如何解决此问题?需要一些帮助。

1 个答案:

答案 0 :(得分:1)

我们假设您有一个名为obj1obj2的变量。 obj1是某个对象的实例。 obj2为空。然后,将obj2的变量设置为obj1变量。你得到了什么? NullPointerException因为obj2为空。

要解决此问题,您必须创建一个对象。例如,在for循环中(在newList.get(...)方法之前)。您想复制对象或复制一些变量。为此,请在for循环中执行此类操作。

newList.set( i, result.get(i) ); // if you want to copy the class

newList.set( i, new Class2(/* ... */) );
newList.get(i).setValue( result.get(i).getValue() ); // to copy variable

@Edit 只有在Class2延伸Class1

时才能使用第一种方法(newList ... =结果...)