如何从 java.util.Set 中获取第一项?

新手上路,请多包涵

我有一个 Set 实例:

 Set<String> siteIdSet = (Set<String>) pContext.getParent().getPropertyValue(getCatalogProperties().getSitesPropertyName());

pContext.getParent().getPropertyValue() 是开箱即用的代码,我无法对其进行任何修改。

要求:

我想(总是)从中获取第 一个 默认元素。但是,我找不到方法 get(index) 就像在 ArrayList 中一样。

因此,现在,我正在这样做。

 for (Iterator<String> it = siteIdSet.iterator(); it.hasNext();) {
    siteId = it.next();
    break;
}

是否有任何(其他) 有效的方法(更短和更好)来实现这一目标?

原文由 KrishPrabakar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

来自 Oracle 文档

顾名思义,该接口对数学 集合 抽象进行建模。

集合论 中,“一个“集合”是不同对象的集合,被认为是一个独立的对象。” - [维基百科 - 集]

在数学上,集合中的元素不是个体化的。他们唯一的身份来源于他们在集合中的存在。因此,获取集合中的“第一个”元素没有意义,因为从概念上讲,这样的任务是不合逻辑的。

从集合中获取“第一个”元素可能没有意义,但如果您只需要从集合中获取一个对象(无法保证是哪个对象),您可以执行以下操作:

 for(String aSiteId: siteIdSet) {
    siteId = aSiteId;
    break;
}

这是获取 Set 的“第一个”对象的一种略短的方法(比您发布的方法),但是由于仍在创建迭代器(在幕后),它不会带来任何性能优势.

原文由 Taylor Hx 发布,翻译遵循 CC BY-SA 3.0 许可协议

这将返回第一个元素

set.iterator().next();

原文由 Sagar Koshti 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题