我有一個集合列表,我需要顛倒它的順序。 一切工作正常反向收集列表<Object>沒有分配ListIterator
List<Point> myList = new ArrayList<Point>();
我可以
Collections.reverse(myList);
扭轉這種局面,但這會導致分配java.util.AbstractList中的$ FullListIterator
我有大約5000 - 10000路徑扭轉探路者,這導致GC踢英寸
我如何反向這沒有任何必要的分配?我使用泛型池時,只要我可以但我堅持這一點。
是否可以接受反向視圖(不是副本)?像[this]一樣(http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Lists.html#reverse(java.util.List))。 – gontard 2012-08-16 07:20:17
這不會分配任何新東西嗎? – 2012-08-16 07:42:08
有新的分配。如果您的列表實現了RandomAccess,則對於經典副本而言,它是O(1)操作而不是O(n/2)。由於它是一個顛倒的列表視圖,行爲也不同:「返回列表中的更改反映在此列表中,反之亦然」。 – gontard 2012-08-16 08:00:05