获取集合中的单个元素

时间:2016-10-16 14:12:12

标签: java

我有一个难以解释的问题。在某些方面,我有一个Set<object>,我需要逐个获取元素(即我只需要获得该元素的一个元素),但如果不是for循环,我就不能。例如,我可以得到一切:

for (Iterator<Object> i = fh.getParsed().iterator(); i.hasNext();) {
        HTTPFormat next = (HTTPFormat) i.next();
        System.out.println(next.getIP());
    }

但如果我想打印一个元素(即System.out.println(trial.getParsed()。get(0))。要理解我说我有一个叫做“解析”的Set class作为属性,是一个解析的getter。我不知道我是否也很清楚,但我希望是的。如果你有疑问,别介意!:)谢谢你!

2 个答案:

答案 0 :(得分:4)

如果您想要Set的单个元素,可以编写

HTTPFormat element = (HTTPFormat) fh.getParsed().iterator().next();

这将根据迭代顺序返回Set的第一个元素。如果这是一个有序集(例如TreeSet),则将返回根据该顺序的第一个元素。如果它是HashSet,它将返回一个任意元素(这取决于hashCode()的{​​{1}}实现和HTTPFormat的当前大小。

请注意,如果Set为空,则会抛出异常。

P.S。我不会使用Set。如果您的Set<Object>包含Set元素,请使用HTTPFormat以避免不安全的广告投放。

答案 1 :(得分:0)

如果您使用的是Java8 +,则可以使用findAnyfindOne从集合中检索一个元素,如下所示

HTTPFormat element = (HTTPFormat) fh.getParsed().stream().findAny().orElse(defaultObject());

find*返回可选对象,可以安全使用,如果集合为空,则可以传递/获取默认元素。

如果你需要第一个元素,你可以在有序收集的情况下使用findFirst