我有一个集合列表,我需要颠倒它的顺序。 一切工作正常反向收集列表<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