Java性能和内存:LinkedList和数组

soB*_*ary 3 java memory performance linked-list

我正在构建一个Android应用程序(所以资源有限的机器),我想知道我应该如何挑剔LinkedLists.

我知道阵列是最轻的容器,并且是最好的随机访问,所以如果你只考虑性能,它们显然是理想的选择.然而,当你不知道你的名单有多大时,他们的僵硬是一种痛苦.

所以这是我的问题:在具有一个或多个不可预测大小列表的类中系统地使用以下类型的机制是否值得:

public class unpredictable
public Object[]realArray;
private LinkedList<Object> temp;

//what using classes will call to add items
public void add(Object item) 
{
    temp.add( item );
}

//what the outer class calls when it knows there's nothing left to add 
public void doneAdding() 
{
    realArray = new Object[tmp.size()];
    transferAndRecycle();
}

private void transferAndRecycle()
{
    // copy items from linkedlist to array
}
Run Code Online (Sandbox Code Playgroud)

所以我想我问是否值得采取额外的步骤来摆脱Java的LinkedList对象带来的额外空间?

有什么输入?谢谢

ncm*_*ist 8

我认为你提供了很多ArrayList类已经包含的服务.ArrayList为您提供O(1)元素访问; 链接列表是O(n).ArrayList的基础机制是一个数组.您可以通过操纵容量来控制此数组的大小.

仔细观察ArrayList - 你可以避免重新发明一些轮子.

额外的想法:数组和泛型不能很好地发挥作用.ArrayLists做.这是一个小项目,但对您来说很重要.