[英]Java generic collection to set
这有点令人困惑。 对不起,如果解释不好。 我正在使用 Sets 练习 Java 流。 我有一个自定义类型PartiallyOrderedSet
初始化如下:
PartiallyOrderedSet 四 = makeSet(new Integer[] { 1, 2, 3, 4 });
在内部,它存储了一个泛型 E 的集合,因此makeSet
可以采用任何类型 E。
为了创建 PartiallyOrderedSet,我们像这样使用 makeSet,例如对于整数(尽管我们可以使用 makeSet 的多个重载来将其转换为任何类型):
private static PartiallyOrderedSet<Int> makeSet(Integer[] elts) {
return new PartiallyOrderedSet<Int>(
Arrays.asList(elts).stream().map(Int::new).collect(Collectors.toList()));
}
重申一下,在 PartiallyOrderedSet 内部,我有一个名为elements
的私有字段,它是<E>
通用的。 这存储了自定义 object 的内部对象:
private Collection<E> elements;
我想将它转换回 java Set<E>
object 以便我可以打印元素集合的内部元素。 我想使用 Java 流来做到这一点,尽管我很迷茫。 有人可以帮忙吗?
例如,output 应如下所示:
{1,2,3,4}
for PartiallyOrderedSet 四 = makeSet(new Integer[] { 1, 2, 3, 4 });
你可以试试:-
设置 myset = elements.stream().collect(Collectors.toSet()));
但是,代码未经测试。
应该是这样的,你可以在这里找到关于generics的信息
private static <T> PartiallyOrderedSet<T> makeSet(T[] elts) {
return new PartiallyOrderedSet<T>(
Arrays.asList(elts).stream().map(Int::new).collect(Collectors.toList()));
}
在 makeSet 之后,如果 PartiallyOrderedSet 是 Set 的子类,则可以直接将其声明为 Set
Set a = makeSet(new Integer[] {1,2,3,4});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.