【问题标题】:Getting the object of a singleton collection获取单例集合的对象
【发布时间】:2012-07-27 20:51:06
【问题描述】:

我想获取一个我知道只有一个元素的集合的对象(基本上它与 Collections.singletonList() 所做的相反 - 但我不知道该集合是否是列表/集合/其他东西,所以我可以不要使用c.get(0))。

目前我使用c.iterator.next(),想知道在Java 或其中一个常用库(apache-commons、guava 等)中是否已经有这种方法

【问题讨论】:

    标签: java collections


    【解决方案1】:

    方法签名和JavaDoc 清楚地表明它是List

    这是签名:

    public static <T> List<T> singletonList(T o)
    

    这是 JavaDoc:

    返回一个只包含指定对象的不可变列表。返回的列表是可序列化的。

    所以,这意味着您可以简单地使用:

    List<MyClass> singleton = Collections.singletonList(myObject);
    MyClass obj = singleton.get(0);
    

    哦,现在我明白你的意思了。我不得不承认你的问题很清楚。但由于某种原因,我不明白:)

    【讨论】:

    • OP 实际上并未使用singletonList。他们想要它做的相反的事情:从任何Collection 中提取一个元素。
    【解决方案2】:

    Iterables.getOnlyElement()(或Iterables.getFirst(),如果集合可以为空)来自 Guava。

    【讨论】:

    【解决方案3】:

    使用 Java 8,您可以:

    collection.stream().findAny().get();
    

    【讨论】:

    • 看看这个解决方案针对collection.iterator().next()的基准会很有趣
    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多