3

想象一下这样的代码:

Set<Car> carObject;

现在我知道这个集合中只有一个对象。我如何正确获得它?

Car myCar = carObject.whatMethod ?

???

编辑:感谢您的出色回答。

我知道只有一个对象,因为我有一个

if(carObject.size ... )

检查之前。

4

5 回答 5

10

如果你真的知道有一个元素:

Car myCar = carObjet.iterator().next();

无论如何,我肯定会这样做:

Iterator<Car> it = carObjet.iterator();
if (it.hasNext()) {
    Car myCar = it.next();
}
于 2013-08-02T11:24:17.470 回答
7

尝试:

carObject.iterator().next();
于 2013-08-02T11:24:10.623 回答
2

您可以使用数组:

Car myCar = carObject.toArray(new Car[1])[0];
于 2013-08-02T11:26:08.433 回答
1

因为集合不能通过索引直接访问其成员,所以您必须遍历集合,这似乎是最便宜的:

Car myCar = carObject.iterator().next();

这通常比将集合转换为数组或列表更可取,因为迭代器不会复制数据结构。

于 2013-08-02T11:26:03.333 回答
1

如果您知道您的Sethasn元素并且想要访问该元素i

carSet.toArray(new Car[n])[i];
于 2013-08-02T11:28:59.223 回答