我正在使用带有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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)