Android适配器:使用Linkedlist与Arraylist

Android适配器:使用Linkedlist与Arraylist,第1张

概述我正在使用带有Gridlayoutmanager的RecycleView.当用户向下滚动时,我的应用程序会加载很多项目.添加新元素时,LinkedList具有良好的性能,而我的ArrayList需要不断调整大小.但是我不确定RecycleView在后台执行的 *** 作与ArrayList和/或LinkedList一起使用会更好.我的适配器是:publ

我正在使用带有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

总结

以上是内存溢出为你收集整理的Android适配器:使用Linkedlist与Arraylist全部内容,希望文章能够帮你解决Android适配器:使用Linkedlist与Arraylist所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存