为Android App创建List的最有效方法

时间:2016-07-04 15:29:31

标签: java android performance

截至标题中,我正在尝试两种不同的方法在android中创建ArrayListView

第一个看起来像这样:

list.add(new Obj("smth", "Note: na, na, na", image[0]));
list.add(new Obj("smth", "Note: na, na, na", image[1]));
list.add(new Obj("smth", "Note: na, na, na", image[2]));

并且有一个图像支持数组:

private int[] images = {
        R.drawable.image1,
        R.drawable.image2,
        R.drawable.image3,
        ...}

另一种方式使用Obj.class的getter和setter方法。像这样:

ArrayList<Obj> objects = new ArrayList<>();

    Obj a=new Obj();
    a.setName("smth");
    a.setNote("na,na,na");
    a.setImage(R.drawable.image1);
    objects.add(a);

    a=new Obj();
    a.setName("smth");
    a.setNote("na, na, na");
    a.setImage(R.drawable.image2);
    objects.add(a);

    a=new Obj();
    a.setName("smth");
    a.setNote("na,na,na");
    a.setImage(R.drawable.image3);
    objects.add(a);

其中一个比另一个好吗?也许它以某种方式提高了性能?如果这个列表中会挤满数百个对象怎么办?

更新 我试图在列表中运行带有许多对象的应用程序,使用第二种方法的性能似乎稍好一些。但我相信还有更好的!

2 个答案:

答案 0 :(得分:2)

你的第二种方法在内存使用方面更好。要压缩代码,您可以执行以下操作。使用较少量的代码可以提供相同的性能/可能还会增加一点性能,因为你没有用这个调用这么多的setter。

hashcode()

如果你对构造函数中的值有一个模式,你可以考虑循环并重新分配和添加。

答案 1 :(得分:-1)

如果你想要一个干净的好名单,请使用带有listview适配器的数组列表。