在ArrayList中创建唯一项的ArrayList

Idi*_*ios 1 java kotlin

我希望我的代码从包含重复项的现有ArrayList(pinyinArrayList)创建一个独特项的ArrayList(uniquePinyinArrayList).

"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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过了

if (uniquePinyinArrayList.contains(currentPinyin)){
Run Code Online (Sandbox Code Playgroud)

,虽然这也行不通.

编辑:这个方法实际上是从我的源词列表中为每个单词运行的,因此创建了多个ArrayLists.为了解决这个问题,我在这个循环之外为uniquePinyin创建了一个ArrayList对象.事情现在按预期工作!

Tod*_*odd 5

查看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]
}
Run Code Online (Sandbox Code Playgroud)

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/distinct.html