寻找一个特殊的java集合
是否有一个java集合只允许在get(索引i)方法中使用唯一对象 我首先想到一个树集,但在…寻找一个特殊的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)/
我希望能够:
//将对象替换为实现正确功能的任何类
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想要的