'associate' can be replaced with 'associateBy' or 'associateWith'
Reports calls to associate() and associateTo() that can be replaced with associateBy() or associateWith().
Both functions accept a transformer function applied to elements of a given sequence or collection (as a receiver). The pairs are then used to build the resulting Map.
Given the transformer refers to it, the associate[To]() call can be replaced with more performant associateBy() or associateWith().
Examples:
fun getKey(i: Int) = 1L
fun getValue(i: Int) = 1L
fun test() {
arrayOf(1).associate { getKey(it) to it } // replaceable 'associate()'
listOf(1).associate { it to getValue(it) } // replaceable 'associate()'
}After the quick-fix is applied:
fun getKey(i: Int) = 1L
fun getValue(i: Int) = 1L
fun test() {
arrayOf(1).associateBy { getKey(it) }
listOf(1).associateWith { getValue(it) }
}- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
ReplaceAssociateFunction
You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:
//noinspection ReplaceAssociateFunctionnote
Actual comment syntax will depend on the code language you are working with
More detailed instructions as well as other ways and options that you have can be found in the product documentation:
Inspection Details | |
|---|---|
By default bundled with: |