平均而言,您的排序算法将针对N个学生的数组调用
complexOperation()大约2
N次日志的方法。如果 *** 作真的很慢,最好为每个学生运行一次。这可以为1000名学生带来数量级的提高。
但是,您不必显式地执行此 *** 作:您可以
complexOperation(...)存储每个学生的结果,然后在后续请求中返回缓存的值:
private Map<Student,Integer> cache = new HashMap<Student,Integer>();private int complexOperation(Student s) { // See if we computed the rank of the student before Integer res = cache.get(s); if (res != null) { // We did! Just return the stored result: return res.intValue(); } ... // do the real computation here // Save the result for future invocations cache.put(s, result); return result;}
请注意,为了使这种方法起作用,
Student类需要实现
hashCode和
equals。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)