java使用哪种数据结构通过两个ID之一搜索对象?
我们有许多节点是这样实现的:
public class Person{
private String name;
private int id1;
private int id2;
private Node next; // or left/right, depending on what you're using.
}
- 如何在平均值小于O(n)的情况下使用
id1
或id2
获得name
李> - 如何以平均O(n)或更快的顺序打印所有
name
李>
我想到使用一个用id1
排序的哈希表和一个由id2
组织的二元搜索树。作为数据结构的初学者,我仍然不确定这种方法
- 就易于实现而言,这是最简单的解决方案吗 使用什么样的数据结构李>
- 使用基于同一对象的两个数据结构会带来任何问题吗?我想知道,像我这样“复制”数据是否会给删除和插入带来任何问题,但也欢迎对原始问题提出其他问题和解决方案李>
# 1 楼答案
我确实会使用
HashMap<Integer, Person>
按ID1存储人员,使用TreeMap<Integer, Person>
按ID2存储人员,按ID2排序第一个是O(1),通过ID1获得名称。第二个是O(N),用于迭代所有值
要回答您的问题:
Collections.unmodifiableCollection()
对其进行包装,以防止从外部修改集合李>