在一个ArrayList中创建一个独特项的ArrayList

3
我希望我的代码能够创建一个ArrayList(uniquePinyinArrayList),其中包含从现有ArrayList(pinyinArrayList)中筛选出的唯一项,该列表包含重复项。
“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)){

尽管如此,这种方法也没有起作用。

编辑: 实际上,该方法会针对源单词列表中的每个单词运行,并因此创建多个ArrayList。为了解决这个问题,我在此循环之外创建了一个唯一拼音的单一ArrayList对象。现在一切都按预期工作了!


回到最初的问题,为什么你的代码不起作用 - 我不知道,对我来说它打印了“已包含”的语句,就像预期的那样。 - zsmb13
编辑了我的问题以解释原因 - 哎呀! - james.sw.clark
2个回答

6

谢谢,我会用这个来清理我的代码!不过,我意识到问题所在并编辑了我的问题以澄清。 - james.sw.clark

3
你可以将数组列表转换为集合。
 Set<String> foo = new HashSet<String>(pinyinArrayList);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接