美文网首页
从List中随机取N个不重复数据

从List中随机取N个不重复数据

作者: 努力2009 | 来源:发表于2022-10-31 14:28 被阅读0次

获取N个随机数,还是很容易出现重复,需要注意去重

2022-10-14 21:38:16.408 6746-6786 D getRandomList: index=132
2022-10-14 21:38:16.408 6746-6786 D getRandomList: index=93
2022-10-14 21:38:16.408 6746-6786 D getRandomList: index=92
2022-10-14 21:38:16.408 6746-6786 D getRandomList: index=92
2022-10-14 21:38:16.408 6746-6786 D getRandomList: index=121

private fun getRandomList(rawList: List<String>, needListSize: Int): List<String> {
    return if (rawList.isNotEmpty()) {
        if (needListSize > 0) {
            val counts = if (needListSize > rawList.size) rawList.size else needListSize
            val randomSet = mutableSetOf<String>()
            for (index in rawList.indices) {
                if (randomSet.size == counts) {
                    break
                }
                val randomIndex = (rawList.indices).random()
                LogUtils.d(LOG_TAG, "getRandomList: index=", randomIndex)
                randomSet.add(rawList[randomIndex])
            }
            randomSet.toList()
        } else {
            rawList
        }
    } else {
        emptyList()
    }
}

相关文章

网友评论

      本文标题:从List中随机取N个不重复数据

      本文链接:https://www.haomeiwen.com/subject/ijprtdtx.html