You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中打乱assets里quotes.json的语录列表

打乱语录列表的解决方案

你可以在解析出语录数组后,直接用Kotlin内置的方法实现打乱需求,这里提供两种简单的修改方式:

方式一:原地打乱原数组

直接对解析得到的数组调用shuffle()方法,它会原地打乱数组内的元素顺序,修改后的完整代码如下:

private fun loadQuotesList(): Array<Quotes> {
    val inputStream = context.assets.open("quotes.json")
    val size: Int = inputStream.available()
    val buffer = ByteArray(size)
    inputStream.read(buffer)
    inputStream.close()

    val json = String(buffer, Charsets.UTF_8)

    val gson = Gson()
    val quotesArray = gson.fromJson(json, Array<Quotes>::class.java)
    
    // 调用shuffle()打乱数组元素
    quotesArray.shuffle()
    
    return quotesArray
}

方式二:返回新的打乱后数组

如果不想修改原数组,而是生成一个全新的打乱后数组,可以用shuffled()方法先得到打乱后的List,再转成数组:

private fun loadQuotesList(): Array<Quotes> {
    val inputStream = context.assets.open("quotes.json")
    val size: Int = inputStream.available()
    val buffer = ByteArray(size)
    inputStream.read(buffer)
    inputStream.close()

    val json = String(buffer, Charsets.UTF_8)

    val gson = Gson()
    val quotesArray = gson.fromJson(json, Array<Quotes>::class.java)
    
    // 返回新的打乱后的数组,原数组保持不变
    return quotesArray.shuffled().toTypedArray()
}

两种方法都能满足需求,区别在于是否保留原数组的原始顺序,根据自己的场景选择即可。

内容的提问来源于stack exchange,提问作者Nami Chand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:57:13