java集合转换缓慢 IMap mapVehicles=//获取所有车辆,总计2500辆 Collection collectionVeh=mapVehicles.values();//快速的 //我想对它进行排序,以便包装到ArrayList List listVehicle=new ArrayList(collectionVeh.values());//很慢 集合。排序(listVehicle);//快速的

java集合转换缓慢 IMap mapVehicles=//获取所有车辆,总计2500辆 Collection collectionVeh=mapVehicles.values();//快速的 //我想对它进行排序,以便包装到ArrayList List listVehicle=new ArrayList(collectionVeh.values());//很慢 集合。排序(listVehicle);//快速的,java,collections,Java,Collections,如何快速地将集合转换为列表 谢谢。如果你有一个集合而不是列表,并且你想把它作为一个列表,没有比执行类似新建ArrayList(你的集合)的操作更快的方法了。(可以这么说,我不相信构造器会做任何不必要的工作。) 但是,您可以做的是更改原始集合。如果它当前是一个HashMap,那么迭代将花费与其容量成比例的时间。通过更改为LinkedHashMap,您可以根据其大小按时间比例对其进行迭代。(可能差别可以忽略不计,但可能值得一试。)请尝试数组.asList(collectionVeh.values()

如何快速地将集合转换为列表


谢谢。

如果你有一个
集合
而不是
列表
,并且你想把它作为一个
列表
,没有比执行类似
新建ArrayList(你的集合)
的操作更快的方法了。(可以这么说,我不相信构造器会做任何不必要的工作。)


但是,您可以做的是更改原始集合。如果它当前是一个
HashMap
,那么迭代将花费与其容量成比例的时间。通过更改为
LinkedHashMap
,您可以根据其大小按时间比例对其进行迭代。(可能差别可以忽略不计,但可能值得一试。)

请尝试
数组.asList(collectionVeh.values().toArray)
?可能它会跑得更快?

如果你把车辆放在树上,它会跑得更快吗?

这是打字错误;它已经像列表listVehicle=newArrayList(collectionVeh);//非常慢您评论说,从Map.values()的输出创建新的ArrayList非常慢,但是对于2500个元素的Map,差异肯定是可以忽略的?换句话说,对我来说,这看起来像是一个微观优化。类似于内存数据网格的地图-hazelcast.com
IMap<Long, Vehicle> mapVehicles = // get all vehicles , total 2500 unit
Collection<Vehicle> collectionVeh = mapVehicles.values(); // fast
// I want to sort it so wrap to ArrayList 
List<Vehicle> listVehicle = new ArrayList(collectionVeh .values()); // very slow
Collections.sort(listVehicle );// fast