List<List<T>> 转 List<T>
时间: 2023-11-11 12:09:00 浏览: 32
可以使用java8的stream来实现,代码如下:
```java
List<List<T>> nestedList = new ArrayList<>();
// 假设已经将嵌套列表赋值好
List<T> flatList = nestedList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
```
以上代码将嵌套列表打平,转成了一维的列表。
相关问题
List<Object>转List<T>
要将 `List<Object>` 转换为 `List<T>`,需要进行强制类型转换,并且需要确保 `List<Object>` 中的所有元素都可以转换为 `T` 类型。可以使用 Java 8 中的流式 API 和 lambda 表达式来实现这个转换过程。
例如,我们可以编写一个通用的方法 `convertList`,它接收一个 `List` 对象和一个类型参数 `Class<T>`,并返回一个 `List<T>` 对象:
```java
public static <T> List<T> convertList(List<Object> list, Class<T> clazz) {
return list.stream()
.map(clazz::cast)
.collect(Collectors.toList());
}
```
在这个方法中,我们使用了 Java 8 中的 `stream()` 函数将 `List<Object>` 转换为流对象,接着使用 `map()` 函数将每个元素进行类型转换,并最终使用 `collect()` 函数将流对象转换为 `List<T>` 对象。
我们可以使用这个方法将一个 `List<Object>` 转换为 `List<String>`,例如:
```java
List<Object> objList = new ArrayList<>();
objList.add("Hello");
objList.add("World");
List<String> strList = convertList(objList, String.class);
System.out.println(strList);
```
输出结果为:
```
[Hello, World]
```
Bindling<> 与 List<>转换
在C++中,Bindling<>和List<>都是STL容器,可以通过以下方法实现它们之间的转换:
将Bindling<>转换为List<>:
```cpp
#include <iostream>
#include <list>
#include <vector>
#include <functional>
using namespace std;
int main() {
vector<int> v{1,2,3,4,5};
Bindling<int> b(v.begin(), v.end());
//将Bindling<>转换为List<>
List<int> l(b.begin(), b.end());
for (int i : l) {
cout << i << " ";
}
return 0;
}
```
将List<>转换为Bindling<>:
```cpp
#include <iostream>
#include <list>
#include <vector>
#include <functional>
using namespace std;
int main() {
list<int> l{1,2,3,4,5};
//将List<>转换为Bindling<>
Bindling<int> b(l.begin(), l.end());
for (int i : b) {
cout << i << " ";
}
return 0;
}
```
需要注意的是,在进行转换时需要包含头文件<vector>和<list>。