返回HashMap的Collection视图的更清洁方式是什么?

时间:2018-04-13 22:14:49

标签: java memory-management memory-leaks hashmap

我试图以更干净的方式理解做事的方式。纠正我,如果我做错了什么,我有一个功能,

 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视图,那么内存(不需要的对象)?

1 个答案:

答案 0 :(得分:2)

  

这会使Entry对象存在于内存中

是的,因为返回的集合只是委托给HashMap

  

最好将所有值()Collection收集到另一个Collection

一般来说,没有。在极少数情况下,您可能需要更紧凑,可序列化的集合或更具体的集合类型(集合或列表)

  

我们是否泄漏记忆

没有。该集合以及它所委托的HashMap最终将像任何其他Java对象一样被垃圾收集。