Forgor ImmutableMap does not allow null keys

This commit is contained in:
DBotThePony 2024-08-30 17:05:28 +07:00
parent 5247771843
commit 859d72defb
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -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)
}