我总结了一下大概这几点:
1 、ArrayList 内存占用远优于 LinkedList 。
2 、LinkedList 因为设计原因,随机插入需要遍历,速度并不快。
3 、作者自己都不用。(盯着这点说我觉得挺没意思的,因为这不是求知的理由)
但是我想到了我最近的一个 LinkedList 的应用场景:我需要将用户手机的全部图片、视频按时间倒序添加到一个 List 里。基于 Android 的 API 限制,图片和视频的查询是分开的,故有大量的中间插入需求。
按照我的理解,ArrayList 这种场景下会有大量的数据后移操作,故我认为这时候用 LinkedList 要科学很多?
疑问:
1 、上述场景中,ArrayList 还是优于 LinkedList 么?如果是原因是什么?
2 、是否有更合适的数据结构? Java 似乎是没有根据比较器在插入时根据内容决定插入位置的 List 。
3 、在并发场景下,最合适的实现方案是什么?按我的理解是加个读写锁?用 CopyOnWriteArrayList 我感觉在这个场景下是一个性能很差的方案。
4 、第三个问题中,实际上我是用 Kotlin 的协程实现的,用 mutex 锁的,有没有更优的方案?(比如直接创建单线程的协程?)
国庆假期也不知道有没有人逛 V2......
linkedlist, arraylist, 插入, 协程