实现一个限定数量,新增旧元素超限后删除最后的元素的List-Fi

2020-11-27  本文已影响0人  不思进取的码农

FixedSizeList是什么

实现

/**
 * 一个固定内容大小的容器,设定固定大小的item数量,当超过去除旧的item
 * 新的item位于最开始的位置,旧的位于后面的位置
 * 该容器只支持写入,不支持外部显式删除操作
 */
class FixedSizeList<T>(private val maxItemCount: Int = 5) {

    private val backingCollection = LinkedList<T>()

    fun add(item: T?) {

        try {
            if (backingCollection.size >= maxItemCount) {

                backingCollection.removeLast()

            }
            backingCollection.addFirst(item)

        } catch (e: Exception) {

            e.printStackTrace()

        }
    }

    override fun toString(): String {
        return "SizedList(maxItemCount=$maxItemCount, backingCollection=$backingCollection)"
    }

    fun getItems(): List<T?> = backingCollection.toList()
}

什么时候使用

使用示例


  private fun testSizedList() {

        val sizedList = FixedSizeList<String>(5)

        for (n in 0..10) {

            sizedList.add(n.toString())

        }

        sizedList.add(null)

        ToastUtil.show(sizedList.getItems().joinToString())
    }

(每天学习一点点.每天进步一点点,分享不宜路过点个赞呀,喜欢的点个关注后续更新不断)

上一篇 下一篇

猜你喜欢

热点阅读