Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 0.59 KB | None | 0 0
  1. val needsMerge = members
  2.                 .mapIndexed { index, it -> Pair(resolved[index], it.statementSetId)}
  3.                 .filter { it.first != it.second }
  4.                 .distinct()
  5.                 .groupBy { it.first }
  6.                 .mapValues { it.value.map {it.second}.sorted() }
  7.                 .asIterable()
  8.                 .fold(emptyMap<StatementSetId,List<StatementSetId>>(), { acc, set ->
  9.                     val transitiveEqualTo = set.value.firstOrNull { acc.contains(it) }
  10.                     if(transitiveEqualTo != null){
  11.                         acc.plus(Pair(transitiveEqualTo, acc[transitiveEqualTo]!!.plus(set.value).distinct()))
  12.                     } else {
  13.                         acc.plus(Pair(set.key, set.value))
  14.                     }
  15.                 })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement