在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);