Forgor ImmutableMap does not allow null keys
This commit is contained in:
parent
5247771843
commit
859d72defb
@ -1,21 +1,25 @@
|
||||
package ru.dbotthepony.mc.otm.core.collect
|
||||
|
||||
import com.google.common.collect.ImmutableMap
|
||||
import com.google.common.collect.ImmutableSet
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap
|
||||
import ru.dbotthepony.mc.otm.core.stream
|
||||
import java.util.function.Supplier
|
||||
import java.util.stream.Stream
|
||||
|
||||
class SupplierMap<K, T>(values: Stream<Pair<K, Supplier<T>>>) : Map<K, T> {
|
||||
private val backing = Object2ObjectLinkedOpenHashMap<K, Supplier<T>>()
|
||||
override val entries: Set<Map.Entry<K, T>>
|
||||
override val keys: Set<K>
|
||||
get() = backing.keys
|
||||
override val size: Int
|
||||
get() = entries.size
|
||||
override val values: Collection<T>
|
||||
private val backing = values.collect(ImmutableMap.toImmutableMap({ it.first }, { it.second }))
|
||||
|
||||
init {
|
||||
values.forEach {
|
||||
backing[it.first] = it.second
|
||||
}
|
||||
|
||||
entries = ImmutableSet.copyOf(backing.entries.map { Entry(it.key, it.value) })
|
||||
this.values = SupplierList(backing.values)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user