Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据条件对数组项进行分组而不返回键?_Java_Kotlin - Fatal编程技术网

Java 如何根据条件对数组项进行分组而不返回键?

Java 如何根据条件对数组项进行分组而不返回键?,java,kotlin,Java,Kotlin,我目前需要通过删除联系人的电话号码来过滤联系人的电话号码,如果出于呼叫ID的目的,这些号码是相同的 例如:-> 在这样的数组中[+911234567812345678,+9112345678999999] +91 12345678与12345678相同,12345678与+91 12345678相同 所以这里的输出应该是[+9112345678999999] 我尝试使用kotlin为分组元素提供的各种group/groupby方法,但所有这些方法都需要一个键。目前没有一个特定的键可以将所有电话号

我目前需要通过删除联系人的电话号码来过滤联系人的电话号码,如果出于呼叫ID的目的,这些号码是相同的

例如:-> 在这样的数组中[+911234567812345678,+9112345678999999]

+91 12345678与12345678相同,12345678与+91 12345678相同

所以这里的输出应该是[+9112345678999999]

我尝试使用kotlin为分组元素提供的各种group/groupby方法,但所有这些方法都需要一个键。目前没有一个特定的键可以将所有电话号码分组。我显然可以创建多个循环并解决这个问题,但我想看看是否有更干净的方法来解决这个问题

您可以使用:


创建NormalizedPhoneNumber类,该类包装电话号码字符串并对其进行规范化,即删除+91前缀和所有空格,并基于规范化结果实现equals和hashCode。然后将所有电话号码转换为NormalizedPhoneNumber的实例,并将其存储在哈希集中。好了:哈希集已经消除了所有重复项。
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
}