import scala.
collection.
mutable
class Index
[K, V
](fn
: V
=> K
) { private val elements
= new mutable.
HashMap[K, mutable.
Set[V
]] with mutable.
MultiMap[K, V
]
elements.addBinding(key, element)
}
elements.removeBinding(key, element)
}
def get
(key
: K
): Set
[V
] = elements.get(key).map(_.toSet) getOrElse Set.empty
}
private val indices
= mutable.
ListBuffer.
empty[Index
[_, V
]]
def addIndex
[K
](fn
: V
=> K
): Index
[K, V
] = { index += elem
}
indices += index
index
}
index += elem
}
}
index -= elem
}
}
}
val set
= new mutable.
HashSet[Int
] with IndexedSet
[Int
] val index
= set.
addIndex(_ % 2 == 0) set += i
}
println
(index.
get(false))}
aW1wb3J0IHNjYWxhLmNvbGxlY3Rpb24ubXV0YWJsZQoKY2xhc3MgSW5kZXhbSywgVl0oZm46IFYgPT4gSykgewogIHByaXZhdGUgdmFsIGVsZW1lbnRzID0gbmV3IG11dGFibGUuSGFzaE1hcFtLLCBtdXRhYmxlLlNldFtWXV0gd2l0aCBtdXRhYmxlLk11bHRpTWFwW0ssIFZdCgogIGRlZiArPShlbGVtZW50OiBWKSA9IHsKICAgIHZhbCBrZXkgPSBmbihlbGVtZW50KQogICAgZWxlbWVudHMuYWRkQmluZGluZyhrZXksIGVsZW1lbnQpCiAgfQoKICBkZWYgLT0oZWxlbWVudDogVikgPSB7CiAgICB2YWwga2V5ID0gZm4oZWxlbWVudCkKICAgIGVsZW1lbnRzLnJlbW92ZUJpbmRpbmcoa2V5LCBlbGVtZW50KQogIH0KCiAgZGVmIGdldChrZXk6IEspOiBTZXRbVl0gPQogICAgZWxlbWVudHMuZ2V0KGtleSkubWFwKF8udG9TZXQpIGdldE9yRWxzZSBTZXQuZW1wdHkKfQoKdHJhaXQgSW5kZXhlZFNldFtWXSBleHRlbmRzIG11dGFibGUuU2V0W1ZdIHsKICBwcml2YXRlIHZhbCBpbmRpY2VzID0gbXV0YWJsZS5MaXN0QnVmZmVyLmVtcHR5W0luZGV4W18sIFZdXQoKICBkZWYgYWRkSW5kZXhbS10oZm46IFYgPT4gSyk6IEluZGV4W0ssIFZdID0gewogICAgdmFsIGluZGV4ID0gbmV3IEluZGV4KGZuKQogICAgZm9yIChlbGVtIDwtIHRoaXMpIHsKICAgICAgaW5kZXggKz0gZWxlbQogICAgfQogICAgaW5kaWNlcyArPSBpbmRleAogICAgaW5kZXgKICB9CgogIGFic3RyYWN0IG92ZXJyaWRlIGRlZiArPShlbGVtOiBWKSA9IHsKICAgIGZvciAoaW5kZXggPC0gaW5kaWNlcykgewogICAgICBpbmRleCArPSBlbGVtCiAgICB9CiAgICBzdXBlci4rPShlbGVtKQogIH0KCiAgYWJzdHJhY3Qgb3ZlcnJpZGUgZGVmIC09KGVsZW06IFYpID0gewogICAgZm9yIChpbmRleCA8LSBpbmRpY2VzKSB7CiAgICAgIGluZGV4IC09IGVsZW0KICAgIH0KICAgIHN1cGVyLi09KGVsZW0pCiAgfQp9CgpvYmplY3QgTWFpbiBleHRlbmRzIEFwcCB7CiAgdmFsIHNldCA9IG5ldyBtdXRhYmxlLkhhc2hTZXRbSW50XSB3aXRoIEluZGV4ZWRTZXRbSW50XQogIHZhbCBpbmRleCA9IHNldC5hZGRJbmRleChfICUgMiA9PSAwKQogIGZvciAoaSA8LSAxIHRvIDIwKSB7CiAgICBzZXQgKz0gaQogIH0KICBwcmludGxuKGluZGV4LmdldCh0cnVlKSkKICBwcmludGxuKGluZGV4LmdldChmYWxzZSkpCn0=
Set(10, 14, 20, 6, 2, 12, 18, 16, 8, 4)
Set(5, 1, 9, 13, 17, 7, 3, 11, 19, 15)