如何使用返回我自己的 List 实现的流收集到 List?
How to collect to a List using streams returning my own List implementation?
如何将流收集到我指定的子类型的列表中?
换句话说,我希望这次测试能够通过。我应该在注释行上做什么才能将流转换为 MyList
实例?
import org.junit.*;
import java.util.*;
import static java.util.stream.Collectors.*;
import static junit.framework.Assert.*;
@Test
public void collectUsingDifferentListType() {
List<String> aList = new ArrayList<>();
aList.add("A");
aList.add("B");
List<String> list1 = aList.stream().collect(toList());
MyList<String> list2 = aList.stream().collect(toList(MyList::new)); // this doesn't exist, but I wish it did
assertEquals(aList, list1);
assertEquals(ArrayList.class, list1.getClass());
assertEquals(aList, list2);
assertEquals(MyList.class, list1.getClass());
}
假设MyList
类型是Collection
,你可以使用Collectors.toCollection
:
MyList<String> list2 = aList.stream().collect(toCollection(MyList::new));
如何将流收集到我指定的子类型的列表中?
换句话说,我希望这次测试能够通过。我应该在注释行上做什么才能将流转换为 MyList
实例?
import org.junit.*;
import java.util.*;
import static java.util.stream.Collectors.*;
import static junit.framework.Assert.*;
@Test
public void collectUsingDifferentListType() {
List<String> aList = new ArrayList<>();
aList.add("A");
aList.add("B");
List<String> list1 = aList.stream().collect(toList());
MyList<String> list2 = aList.stream().collect(toList(MyList::new)); // this doesn't exist, but I wish it did
assertEquals(aList, list1);
assertEquals(ArrayList.class, list1.getClass());
assertEquals(aList, list2);
assertEquals(MyList.class, list1.getClass());
}
假设MyList
类型是Collection
,你可以使用Collectors.toCollection
:
MyList<String> list2 = aList.stream().collect(toCollection(MyList::new));