Java 将一个类中的对象集合赋值给另一个类的同名对象集合
时间: 2023-07-19 12:32:32 浏览: 73
可以通过循环遍历源对象集合,将每个对象分别赋值给目标对象集合中对应的位置。也可以使用 Java 8 中提供的 stream() 方法来简化代码,示例代码如下:
```
// 假设源类为 SourceClass,目标类为 TargetClass
// 源对象集合
List<SourceClass> sourceList = new ArrayList<>();
// 目标对象集合
List<TargetClass> targetList = new ArrayList<>();
// 将源对象集合中的每个对象转换为目标类对象,并添加到目标对象集合中
sourceList.stream().map(source -> {
TargetClass target = new TargetClass();
// 进行属性复制,例如:
target.setName(source.getName());
target.setAge(source.getAge());
return target;
}).forEach(target -> targetList.add(target));
```
需要注意的是,这种方式要求源类和目标类具有相同的属性,否则需要进行属性转换或者手动赋值。另外,如果源对象集合和目标对象集合中的元素类型不同,也需要进行类型转换。
相关问题
Java 将一个类中的Object集合赋值给另一个类的同名Object集合
可以使用反射来实现将一个类中的Object集合赋值给另一个类的同名Object集合。具体步骤如下:
1. 获取源类和目标类的Class对象;
2. 使用Class对象的getDeclaredField方法获取源类和目标类中的同名字段;
3. 获取源类中同名字段的值;
4. 将源类中同名字段的值赋值给目标类中同名字段。
以下是一个示例代码:
```java
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class MyClass1 {
private List<Object> myList = new ArrayList<>();
public MyClass1() {
myList.add("hello");
myList.add(123);
}
public static void main(String[] args) {
MyClass1 myClass1 = new MyClass1();
MyClass2 myClass2 = new MyClass2();
Class<?> clazz1 = myClass1.getClass();
Class<?> clazz2 = myClass2.getClass();
try {
Field field1 = clazz1.getDeclaredField("myList");
Field field2 = clazz2.getDeclaredField("myList");
Object value = field1.get(myClass1);
field2.set(myClass2, value);
System.out.println(myClass2.getMyList()); // 输出:[hello, 123]
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
class MyClass2 {
private List<Object> myList;
public List<Object> getMyList() {
return myList;
}
public void setMyList(List<Object> myList) {
this.myList = myList;
}
}
```
在这个示例代码中,MyClass1中有一个名为myList的List<Object>类型的字段,其中包含了两个元素:一个String类型的"hello"和一个Integer类型的123。我们使用反射将myList的值赋给了MyClass2中同名的字段myList,最后输出了MyClass2中myList的值,可以看到其值与MyClass1中的值相同。
java中把一个集合赋值给另一个集合
在Java中,可以使用集合类的构造函数或者addAll()方法将一个集合赋值给另一个集合。下面是两种常见的方法:
1. 使用构造函数:
```
List<Integer> sourceList = new ArrayList<>(); // 原始集合
List<Integer> targetList = new ArrayList<>(sourceList); // 将原始集合赋值给目标集合
```
2. 使用addAll()方法:
```
List<Integer> sourceList = new ArrayList<>(); // 原始集合
List<Integer> targetList = new ArrayList<>();
targetList.addAll(sourceList); // 将原始集合赋值给目标集合
```
注意:以上示例中使用的是ArrayList作为示例,但是对于其他类型的集合,也可以使用类似的方法进行赋值操作。