2017-06-13 91 views
1

我希望我的代碼從包含重複內容的現有ArrayList(pinyinArrayList)創建唯一項目的ArrayList(uniquePinyinArrayList)。在ArrayList中創建唯一項目的ArrayList

的「的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對象。事情現在按預期工作!

+0

回到原來的問題,爲什麼你的代碼不工作 - 不知道,它打印已包含的語句正如我所預期的那樣。 – zsmb13

+0

編輯我的問題來解釋爲什麼 - 哎呀! – Idios

回答

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] 
} 

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

+0

謝謝,會用這個來清理我的代碼!但是,我意識到問題所在,並編輯了我的問題來澄清。 – Idios

1

你可以把你的數組列表進行設置。

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