寻找一个特殊的java集合

寻找一个特殊的java集合,java,Java,是否有一个java集合只允许在get(索引i)方法中使用唯一对象 我首先想到一个树集,但在… 我希望能够: //将对象替换为实现正确功能的任何类 Collection=dunno(); 对象o=新对象() 对象o2=新对象() 集合。添加(o) 集合。添加(o) collection.size()//应为1 collection.get(0)//应返回o //让我们假设o2低于o(如果集合没有按照我想要的方式排序,我无论如何都可以更改它) 收集。添加(o2) collection.get(0)/

是否有一个java集合只允许在get(索引i)方法中使用唯一对象

我首先想到一个树集,但在…
我希望能够:

//将对象替换为实现正确功能的任何类
Collection=dunno();
对象o=新对象()
对象o2=新对象()
集合。添加(o)
集合。添加(o)
collection.size()//应为1
collection.get(0)//应返回o
//让我们假设o2低于o(如果集合没有按照我想要的方式排序,我无论如何都可以更改它)
收集。添加(o2)
collection.get(0)//应返回o2

所以基本上像树集,但是有get方法的人知道这样的事情吗?

你应该使用
LinkedHashSet

此集合仅接受唯一对象并跟踪订单

您应该使用
链接数据库集

此集合只接受唯一对象,并跟踪自定义类中的顺序

覆盖
等于和
哈希代码

使用
Arraylist
,您可以在添加之前检查
列表。包含
,以删除重复的在自定义类中覆盖
等于
hashcode
使用
Arraylist
,您可以在添加以删除重复项之前检查
列表。包含
在保持插入项唯一性的同时保持插入顺序

虽然它没有一个专用的get(i)方法,但是您可以通过迭代集合来实现一个

但是,您将为get()的性能付费。

保持插入顺序,同时也保持插入项的唯一性

虽然它没有一个专用的get(i)方法,但是您可以通过迭代集合来实现一个


不过,您将为get()的性能付费。

标准库中没有这样的集合,我也不知道其他广泛使用的库(如guava或apache commons)中也有类似的集合


因此答案是:您必须为此实现自己的集合。一个简单的解决方案将使用一个集合和一个列表来提供所需的接口,这将起作用,但显然会在一定程度上增加内存占用。

标准库中没有这样的集合,我也不知道其他广泛使用的库(如guava或apache commons)中也有类似的情况


因此答案是:您必须为此实现自己的集合。直截了当的解决方案将使用集合和列表来提供所需的接口,这将起作用,但显然会在一定程度上增加内存占用。

在添加到
列表之前,您可以始终使用
包含
如果需要的话,使用包含并添加到列表可能是一个好主意,与添加到树集一样快,特别是对于一些大型集?我可以很容易地操纵上千种元素…这能回答你的问题吗?问题@SomeDude linked to的答案建议LinkedHashSet在添加到
列表之前,您可以始终使用
包含
,如果需要的话是的,最好使用包含并添加到列表中的速度与添加到树集的速度一样快,特别是对于一些大型集合?我可以很容易地操纵上千种元素…这能回答你的问题吗?问题@SomeDude linked to的答案表明LinkedHashSetIt没有索引,这是GalyFly想要的,但它没有索引,这是GalyFly想要的