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
Algorithm Kotlin-从数组中删除重复字符串的惯用方法?_Algorithm_Kotlin - Fatal编程技术网

Algorithm Kotlin-从数组中删除重复字符串的惯用方法?

Algorithm Kotlin-从数组中删除重复字符串的惯用方法?,algorithm,kotlin,Algorithm,Kotlin,如何从kotlin中的阵列中删除重复项?使用: 还有一种方法允许用户指定如何区分项目: val a = listOf("a", "b", "ab", "ba", "abc") val b = a.distinctBy { it.length } // ["a", "ab", "abc"] 正如建议的那样,您还可以使用,并且,如果您不需要保留原始顺序。这些函数生成一个集合,而不是列表,并且应该比独特的更有效 你可能会发现: 您也可以使用toSet或toMutableSet,它们的开销比d

如何从kotlin中的
阵列中删除重复项?

使用:

还有一种方法允许用户指定如何区分项目:

val a = listOf("a", "b", "ab", "ba", "abc")
val b = a.distinctBy { it.length } // ["a", "ab", "abc"]
正如建议的那样,您还可以使用,并且,如果您不需要保留原始顺序。这些函数生成一个
集合
,而不是
列表
,并且应该比
独特的
更有效


你可能会发现:


您也可以使用
toSet
toMutableSet
,它们的开销比
distinct
小,如果排序不重要,您可以使用
toHashSet
@mfulton26,当然它并不总是有开销。例如,JPA实体对象可以有延迟加载的字段,因此按id区分其集合比执行完全加载更有效comparison@Buckstabue我明白了,我相信我们讨论的是两个不同的问题:1)
to*Set
distinct[By]更有效(空间和时间)
因为它直接返回
集合
,而不是在内部使用
集合
,并将其转换为
列表
作为其返回值;2)
is的
distinctBy可能比
distinct
更有效,因为可以避免完全对象相等比较。两者都是有效的观点。我带着你的陈述“当然,它并不总是有开销”,我回答了这个问题,却忽略了你将
distinct
distinctBy
(而不是
to*Set
)进行比较。@mfulton26,你是对的。我的主要意思是,有时使用List+distinctBy比使用Set更好,因为Set密集地使用equals/hashCode,在编写时调用它可能会很昂贵,
Iterable.distinct
实际上在内部使用
toMutableSet().toList()
。所以不要担心性能:-)如果有人正在寻找要删除的连续字符,请访问
val a = listOf("a", "b", "ab", "ba", "abc")
val b = a.distinctBy { it.length } // ["a", "ab", "abc"]