我有一个TreeSet其中的元素有两个属性(姓名和年龄)的对象。每次我想要搜索具有特定名称的对象时,我都必须使用增强型for循环或迭代器。无法使用TreeSet中的contains()方法
我不能使用方法来搜索具有特定名称的对象,因为这个名字是此对象中“封装”。
有没有办法解决这个问题?那就是利用log(n)
时间复杂度的一种方法?
由于在TreeSet中所有元素都按名称排序,必须有一个方式,我认为。
什么,我想实现的一个例子:
public Element search(String name) {
// if some TreeSet element's name.equals(name), return the Element
}
的一个例子是我不希望使用:
public Element search(String name) {
for (Element entry : tree) {
if (entry.getName().equals(name)) {
return entry;
}
}
return null;
}
为什么这是一个集而不是地图从名字到凡是? – user2357112
@ user2357112:因为这是一项任务,我不允许更改集合。 –
然后,分配可能要么使用O(n)查找,要么避免执行这些查找操作。还有可能你应该建立和维护一个辅助地图,或者这个任务不一致,或者你误解了某些东西。 – user2357112