在ArrayList中创建唯一项目的ArrayList
我想我的代码创建一个ArrayList(uniquePinyinArrayList)的唯一项目从一个现有的ArrayList(pinyinArrayList)其中包含重复。
“println”命令不执行(我认为他们应该做什么时,pinyinArrayList中找到一个副本在uniquePinyinArrayList中找到)
fun uniquePinyinArray(pinyinArrayList: ArrayList<String>) { val uniquePinyinArrayList = ArrayList<String>() for(currentPinyin in pinyinArrayList){ if (currentPinyin in uniquePinyinArrayList){ // do nothing println("already contained"+currentPinyin) println("uniquePinyin"+uniquePinyinArrayList) } else { uniquePinyinArrayList.add(currentPinyin) } } }
我也试过了
if (uniquePinyinArrayList.contains(currentPinyin)){
,虽然这也没有工作。
编辑:这个方法实际上是从我的源单词列表中的每个单词运行,因此创建了多个ArrayList。 为了解决这个问题,我在这个循环之外为uniquePinyin创建了一个单独的ArrayList对象。 事情现在按预期工作!
看看distinct()
函数,它会为你做这一切!
fun main(args: Array<String>) { val listOfThings = listOf("A", "B", "C", "A", "B", "C") val distinctThings = listOfThings.distinct() println(listOfThings) // [A, B, C, A, B, C] println(distinctThings) // [A, B, C] }
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/distinct.html
你可以转换你的数组列表来设置。
Set<String> foo = new HashSet<String>(pinyinArrayList);