我有一个来自Filereader的列表列表(字符串),如何将其转换为一个列表列表(双精度):我必须返回line-Array的第一个值的列表。谢谢。
docker-compose run
答案 0 :(得分:2)
您可以使用以下方法将所有String列表转换为Double
public static <T, U> List<U> convertStringListTodoubleList(List<T> listOfString, Function<T, U> function)
{
return listOfString.stream()
.map(function)
.collect(Collectors.toList());
}
调用方法
List<Double> listOfDouble = convertStringListTodoubleList(listOfString,Double::parseDouble);
答案 1 :(得分:0)
java.util.stream.Collectors为此提供了一个方便的方法。请参考以下代码片段。您可以用逻辑替换
Map<String, Integer> map = list.stream().collect(
Collectors.toMap(kv -> kv.getKey(), kv -> kv.getValue()));
答案 2 :(得分:0)
我不确定您到底想获得什么作为输出,但是在任何情况下都没有那么复杂。假设您有这样的东西:
[["1", "2"],
["3", "4"]]
如果要将所有第一个元素都设为Double [1, 3]
(假设第一个元素始终存在):
List<Double> firstAsDouble = allLines.stream()
.map(line -> line.get(0))
.map(Double::parseDouble)
.collect(Collectors.toList());
如果相反,您只想将所有String值转换为Double并保持结构不变:
List<List<Double>> matrix = allLines.stream()
.map(line -> line.stream().map(Double::parseDouble).collect(Collectors.toList()))
.collect(Collectors.toList());
或者,如果您想输出具有所有值([1, 2, 3, 4]
)的单个数组,则可以将其平面映射:
List<Double> flatArray = allLines.stream()
.flatMap(line -> line.stream().map(Double::parseDouble))
.collect(Collectors.toList());