在ArrayList中创建唯一项的ArrayList

时间:2017-06-13 01:20:42

标签: java kotlin

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

“println”命令不执行(我认为他们应该在复制来自uniquePinyinArrayList中的pinyinArrayList时执行)

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)){

,虽然这也行不通。

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

2 个答案:

答案 0 :(得分:5)

查看[]功能,它会为您完成所有这些!

distinct()

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

答案 1 :(得分:1)

您可以将数组列表转换为设置。

 Set<String> foo = new HashSet<String>(pinyinArrayList);