【问题标题】:Get and Set methods in SetsSet 中的 Get 和 Set 方法
【发布时间】:2013-12-26 10:50:02
【问题描述】:

List 接口允许我们在索引处使用 get() 方法获取对象。

我们如何在像LinkedHashSet这样的集合接口中获取特定索引处的对象

【问题讨论】:

标签: java collections interface


【解决方案1】:

Set无序的。没有索引的概念。

因此,如果你想得到一个特定的元素,你必须循环遍历它,一旦找到你想要的元素就中断。

【讨论】:

    【解决方案2】:

    http://docs.oracle.com/javase/7/docs/api/java/util/Set.html

    这里:http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html

    但是一个集合只用于检查列表中是否有东西,而不是它在哪里。

    【讨论】:

      【解决方案3】:

      简短的回答是,这是不可能的。但是,您可以从您正在使用的 Set 中获取一个包含所有数据的数组,然后通过索引访问它。这与 Set 提供的抽象有关,它不同于 List。

      Set 只是一个不允许重复的集合(在排序上没有 cmets),但 List 是一个暗示排序的集合,因此每个值都有一个关联的索引。

      【讨论】:

      • LinkedList 实际上有一个订单,the order in which elements were inserted into the set (insertion-order)。但是,它不提供直接访问器。不过,您的建议是转换为数组是正确的答案。
      • @Moritz,你是对的,但是 LinkedHashSet 不是 LinkedList,它包含一个 LinkedList,所以它不会向用户公开这个特性 :) 这是我的思路。跨度>
      • @prmottajr 注意这个术语:它不包含LinkedList,而是一个通用术语的“链表”。实际上LinkedHashSet 是基于LinkedHashMap,而不是LinkedList
      【解决方案4】:

      你不能。集合没有索引访问,因为它没有排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多