Groovy:多次显示重复值

时间:2017-07-10 21:27:39

标签: groovy duplicates hashset

我正在尝试通过groovy从txt文件中检索并显示重复值,当我使用以下代码片段时,我能够检索所需的所有值及其重复值;但是,当显示输出时,它会显示两次以上出现两次以上而不是一次的任何值。我附加了输出,以便更好地显示我遇到的情况。任何指导表示赞赏!

 //Find and display duplicate values
    Set<String> store = new HashSet<>()
    for (String num : phones){
        if (!store.add(num)){
            println("Duplicate Number: " + num + " : " + phones.count(num) + " instances")
    }
    }

Output:

Duplicate Number: 567-567-5678 : 3 instances
Duplicate Number: 877-898-8767 : 4 instances
Duplicate Number: 877-898-8767 : 4 instances
Duplicate Number: 789-987-7890 : 2 instances
Duplicate Number: 567-567-5678 : 3 instances
Duplicate Number: 456-567-8907 : 2 instances
Duplicate Number: 877-898-8767 : 4 instances

1 个答案:

答案 0 :(得分:0)

只有在第一次添加号码时才能打印出来:

Set<String> store = new HashSet<>()
for (String num : phones){
    def count = phones.count(num)
    if (store.add(num) && count > 1) {
        println("Duplicate Number: " + num + " : " + count + " instances")
    }
}

使用Groovy,它实际上是一个单行:

phones.countBy { it }.findAll { it.value > 1 }.each { k, v -> println "Dup: $k: $v times" }