繁体   English   中英

Java 通用集合设置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM