如何在不返回键的情况下根据条件对数组的项进行分组?

时间:2019-08-17 15:30:44

标签: java kotlin

我目前需要通过删除联系人号码来过滤联系人的电话号码(如果出于呼叫ID的目的而相同)。

例如:-> 在这样的数组中 [“ + 91 12345678”,“ 12345678”,“ + 91 123 456 78”,“ 99999999”]

“ + 91 12345678” “ 12345678” 相同,与“ + 91 123 456 78”

因此,此处的输出应为 [“ + 91 12345678”,“ 99999999”]

我尝试通过kotlin提供的各种group/groupby方法来对元素进行分组,但是所有方法都需要一个键。当前,尚无将所有电话号码归为一组的特定键。我显然可以创建多个循环并解决此问题,但我想看看是否有一种更清洁的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用distinctBy

val list = listOf("+91 12345678","12345678","+91 123 456 78","99999999")
val output = list.distinctBy {
    it.replace(" ", "") // Remove whitespace
    // TODO also add the +91 prefix if it is not already there
}