我有一个难以解释的问题。在某些方面,我有一个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。我不知道我是否也很清楚,但我希望是的。如果你有疑问,别介意!:)谢谢你!
答案 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 +,则可以使用findAny
或findOne
从集合中检索一个元素,如下所示
HTTPFormat element = (HTTPFormat) fh.getParsed().stream().findAny().orElse(defaultObject());
find*
返回可选对象,可以安全使用,如果集合为空,则可以传递/获取默认元素。
如果你需要第一个元素,你可以在有序收集的情况下使用findFirst