如何在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
相关产品推荐
相关产品推荐

