我试图以更干净的方式理解做事的方式。纠正我,如果我做错了什么,我有一个功能,
Collection<Object> x(Collection<Object> input){
Map<Double,Object> map = new HashMap<Double,Object>();
//do some processing
return map.values();
}
现在这会使Entry对象存在于内存中,因为values()包装了entrySet(),在这种情况下,最好是收集所有值()Collection到另一个Collection并返回另一个东西是,我们是否泄漏如果我们返回HashMap的Collection视图,那么内存(不需要的对象)?
答案 0 :(得分:2)
这会使Entry对象存在于内存中
是的,因为返回的集合只是委托给HashMap
最好将所有值()Collection收集到另一个Collection
中
一般来说,没有。在极少数情况下,您可能需要更紧凑,可序列化的集合或更具体的集合类型(集合或列表)
我们是否泄漏记忆
没有。该集合以及它所委托的HashMap最终将像任何其他Java对象一样被垃圾收集。