泛型不同的list拷贝
时间: 2023-10-09 16:11:34 浏览: 37
可以使用Java中的Collections.copy()方法来拷贝泛型不同的List,但是要确保源List和目标List的大小相同。具体实现方式如下:
```java
//定义源List和目标List
List<Object> srcList = new ArrayList<>();
List<String> destList = new ArrayList<>();
//添加数据到源List
srcList.add("A");
srcList.add("B");
srcList.add("C");
//先确保目标List的大小和源List相同
while (destList.size() < srcList.size()) {
destList.add(null);
}
//执行拷贝
Collections.copy(destList, srcList);
System.out.println(destList); //输出 ["A", "B", "C"]
```
相关问题
不同泛型list属性复制
如果你需要复制不同泛型list属性,可以使用以下方法:
1. 使用显式类型转换
这种方法需要将源列表中的每个元素都转换为目标类型,并将其添加到新列表中。这种方法适用于两个列表中的元素类型不同的情况。例如:
List<Integer> sourceList = new ArrayList<>();
sourceList.add(1);
sourceList.add(2);
sourceList.add(3);
List<Double> targetList = new ArrayList<>();
for (Integer i : sourceList) {
targetList.add((double) i);
}
2. 使用Java 8的流
这种方法使用Java 8的流来转换源列表中的元素,并将其复制到目标列表中。这种方法适用于两个列表中的元素类型相同的情况。例如:
List<Integer> sourceList = new ArrayList<>();
sourceList.add(1);
sourceList.add(2);
sourceList.add(3);
List<Integer> targetList = sourceList.stream()
.map(Integer::intValue)
.collect(Collectors.toList());
3. 使用Apache Common Collections
这种方法使用Apache Common Collections库中的转换方法来复制源列表到目标列表中。这种方法适用于两个列表中的元素类型不同的情况。例如:
List<Integer> sourceList = new ArrayList<>();
sourceList.add(1);
sourceList.add(2);
sourceList.add(3);
List<Double> targetList = new ArrayList<>();
CollectionUtils.collect(sourceList, new Transformer<Integer, Double>() {
@Override
public Double transform(Integer input) {
return (double) input;
}
}, targetList);
总的来说,以上三种方法都可以实现不同泛型list属性的复制,具体使用哪一种方法取决于你的需求和个人喜好。
list中如何存储不同泛型的list
在Java中,可以使用泛型来定义一个可以存储不同类型的List。例如,可以使用以下代码来定义一个可以存储不同泛型的List:
List<List<?>> list = new ArrayList<>();
这个List可以存储任何类型的List,例如:
List<String> stringList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();
可以将这些List添加到list中,例如:
list.add(stringList);
list.add(integerList);
这样就可以存储不同泛型的List了。