java List <BigDecimal>转List<Object>
时间: 2023-10-14 15:25:06 浏览: 41
可以使用 Java 8 的 Stream API 将 `List<BigDecimal>` 转换为 `List<Object>`。例如:
```java
List<BigDecimal> bigDecimalList = Arrays.asList(BigDecimal.valueOf(1), BigDecimal.valueOf(2), BigDecimal.valueOf(3));
List<Object> objectList = bigDecimalList.stream().map(Object::valueOf).collect(Collectors.toList());
```
这里的 `map(Object::valueOf)` 将每个 `BigDecimal` 对象转换为对应的 `Object` 对象,最后使用 `collect(Collectors.toList())` 将转换后的结果收集为一个 `List`。
相关问题
怎么从list中取出数据放到List<BigDecimal>中
如果你有一个List,其中包含了其他类型的数据,你想将这些数据提取出来并放入一个新的List<BigDecimal>中,你可以使用循环遍历原始的List,并将每个元素转换为BigDecimal类型后添加到新的List中。以下是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class ExtractBigDecimal {
public static void main(String[] args) {
List<Object> originalList = List.of(
1.23,
4.56,
"7.89",
10,
"hello"
);
List<BigDecimal> bigDecimalList = new ArrayList<>();
for (Object element : originalList) {
if (element instanceof BigDecimal) {
bigDecimalList.add((BigDecimal) element);
} else if (element instanceof String) {
try {
BigDecimal number = new BigDecimal((String) element);
bigDecimalList.add(number);
} catch (NumberFormatException e) {
// Ignore elements that cannot be parsed as BigDecimal
}
}
}
System.out.println("BigDecimal List: " + bigDecimalList);
}
}
```
在上面的示例中,我们创建了一个包含不同类型数据的列表`originalList`,其中包含了BigDecimal类型、Double类型、String类型和Integer类型的元素。然后,我们创建了一个空的List<BigDecimal> `bigDecimalList`,用于存放提取出的BigDecimal类型元素。
在循环遍历原始列表时,我们使用`instanceof`运算符检查每个元素的类型。如果元素是BigDecimal类型,直接将其添加到新的List中。如果元素是String类型,我们尝试将其解析为BigDecimal类型,如果解析成功,则将其添加到新的List中。
最后,我们打印出新的List `bigDecimalList`,其中只包含了BigDecimal类型的元素。
请根据你的实际情况调整代码,并处理可能出现的异常情况。
怎么从list中取出某个字段放到List<BigDecimal>中
如果你有一个包含对象的List,并且想要从这些对象中提取某个字段的值,然后将这些值放入一个新的List<BigDecimal>中,你可以使用循环遍历原始的List,并使用对象的getter方法获取字段的值,并将其转换为BigDecimal类型后添加到新的List中。以下是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class ExtractFieldToBigDecimal {
public static void main(String[] args) {
List<MyObject> originalList = List.of(
new MyObject("Value 1", new BigDecimal("1.23")),
new MyObject("Value 2", new BigDecimal("4.56")),
new MyObject("Value 3", new BigDecimal("7.89"))
);
List<BigDecimal> fieldList = new ArrayList<>();
for (MyObject obj : originalList) {
fieldList.add(obj.getBigDecimalField());
}
System.out.println("BigDecimal Field List: " + fieldList);
}
static class MyObject {
private String stringField;
private BigDecimal bigDecimalField;
public MyObject(String stringField, BigDecimal bigDecimalField) {
this.stringField = stringField;
this.bigDecimalField = bigDecimalField;
}
public BigDecimal getBigDecimalField() {
return bigDecimalField;
}
}
}
```
在上面的示例中,我们创建了一个包含MyObject对象的列表`originalList`,每个对象包含一个字符串字段和一个BigDecimal字段。然后,我们创建了一个空的List<BigDecimal> `fieldList`,用于存放提取出的BigDecimal字段值。
在循环遍历原始列表时,我们使用对象的`getBigDecimalField()`方法获取BigDecimal字段的值,并将其添加到新的List中。
最后,我们打印出新的List `fieldList`,其中只包含了BigDecimal字段值。
请根据你的实际情况调整代码,并使用适当的字段和getter方法。