其他分享
首页 > 其他分享> > Android适配器:使用Linkedlist与Arraylist

Android适配器:使用Linkedlist与Arraylist

作者:互联网

我正在使用带有Gridlayoutmanager的RecycleView.当用户向下滚动时,我的应用程序会加载很多项目.

添加新元素时,LinkedList具有良好的性能,而我的ArrayList需要不断调整大小.

但是我不确定RecycleView在后台执行的操作与ArrayList和/或LinkedList一起使用会更好.

我的适配器是:

public class PhotosAdapter extends RecyclerView.Adapter<PhotosAdapter.PhotosViewHolder> {

    private Context context;

    private List<Photo> items;

    public PhotosAdapter(Context context, List<Photo> items) {
        this.context = context;
        this.items = items;
    }

    //other code here

    public void addAll(List<Photo> newItems) {
        int beforeSize = items.size()-1;
        items.addAll(newItems);
        notifyItemRangeInserted(beforeSize, newItems.size());
    }

}

因此,当我创建一个新的空适配器时,我可以执行以下操作:

new PhotosAdapter(getContext(), new ArrayList<Photo>());

或这个:

new PhotosAdapter(getContext(), new LinkedList<Photo>());

当简单地添加新元素时:

adapter.addAll(myPhotos);

那么在这种情况下,LinkedList会更好地工作吗?那么RecycleView的优化滚动呢?使用ArrayList或LinkedList更好吗?

解决方法:

现在第一个问题应该是您是否过早优化?这是您应用程序的关键部分,您是否遇到性能问题?

无论如何,在大多数情况下,ArrayLists都会为您提供更好的性能.我建议将其用作默认值,并且仅在要向列表中间插入数据时才使用链接列表.

是的,当ArrayLists太大时,需要调整数组的大小,但是在大多数情况下,这不会抵消您获得的好处.

请记住,使用LinkedLists时,get(int index)为O(n),而使用ArrayLists时,则为O(1).如果您真的担心经常添加很多元素,则可以给ArrayList较大的初始容量,这样就不必经常调整大小.

如果您有兴趣,请查看Bjarne Stroustrup的演讲. https://www.youtube.com/watch?v=YQs6IC-vgmo

标签:performance,android-recyclerview,android,android-adapter
来源: https://codeday.me/bug/20191119/2033032.html