我该用哪个容器类?
哪位知道有没有这样的容器来能满足我如下的需求?
需要存储的元素都是自己定义的类的对象,容器里的对象不能重复。
容器里的元素都有自己的编号,通过对象可以拿到自己的编号,也可以通过编号找到这个元素。
有满足这个要求的容器类吗?
------解决方案--------------------
map本身不能保证value唯一.
用set.
至于编号,每个容器都有编号,如果你的key不是数值类型,再用map吧
Set(interface): 存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。
TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。
LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注重的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。