正确使用在地图中存储对象

Tra*_*ity 6 java collections dictionary

假设我需要存储一组Student对象,并且每个学生都有一个唯一的id.一种选择是将所有这些存储在列表中,但是当搜索学生时,我必须执行线性搜索并检查他们的ID.另一种选择是使用提供的地图,是这样的:地图,其中键是学生的ID映射到实际的学生对象.

对于给定的问题,这是一种明智的方法吗?一方面它感觉正确,因为我可以轻松地通过他们的id检索学生,但是,另一方面,感觉我稍微冗余地存储已经存在于学生对象中的id - 所以我是排序的存储它两次,但关键是查找机制.

我的添加将是这样的:

public void add(Student s) {
     lookup.put(s.getId(), s);
}
Run Code Online (Sandbox Code Playgroud)

Fan*_*chi 1

也许这种冗余是您在编程中遇到的唯一一种冗余。

使用具有唯一对象 ID 的 Map 所带来的附加价值,无论是在性能还是可读性方面,都值得这种做法所产生的少量开销。

如果你真的觉得这个开销太大,你放入 Map 数据结构中的对象可以去掉 ID 属性,并且 ID 属性将只用作键,然后在检索时,你可以从地图键。