stream流中list转map再转list
时间: 2023-12-23 14:28:11 浏览: 74
在Java 8中,可以使用Stream流将List转换为Map,然后再将Map转换回List。下面是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamListToMapToList {
public static void main(String[] args) {
// 创建一个测试类对象的List
List<TestCase> testCaseList = createTestCaseList();
// 将List转换为Map
Map<String, TestCase> testCaseMap = testCaseList.stream()
.collect(Collectors.toMap(TestCase::getId, testCase -> testCase));
// 将Map转换回List
List<TestCase> convertedList = testCaseMap.values().stream()
.collect(Collectors.toList());
// 打印转换后的List
for (TestCase testCase : convertedList) {
System.out.println(testCase);
}
}
// 创建一个测试类对象的List
private static List<TestCase> createTestCaseList() {
List<TestCase> testCaseList = new ArrayList<>();
testCaseList.add(new TestCase("1", "Test Case 1"));
testCaseList.add(new TestCase("2", "Test Case 2"));
testCaseList.add(new TestCase("3", "Test Case 3"));
return testCaseList;
}
// 测试类
static class TestCase {
private String id;
private String name;
public TestCase(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "TestCase{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
}
```
这段代码首先将List<TestCase>转换为Map<String, TestCase>,其中键是TestCase对象的id,值是TestCase对象本身。然后,通过Map的values()方法获取所有的TestCase对象,再使用Stream流将其转换回List<TestCase>。最后,打印转换后的List。
阅读全文