More constructors for supplier map/list

This commit is contained in:
DBotThePony 2022-10-10 16:22:14 +07:00
parent cb9454dadb
commit d29aed077d
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 19 additions and 2 deletions

View File

@ -1,5 +1,8 @@
package ru.dbotthepony.mc.otm.core
import java.util.function.Supplier
import java.util.stream.Stream
class SupplierList<T> : AbstractList<T> {
private val getters: Array<() -> T>
@ -7,8 +10,17 @@ class SupplierList<T> : AbstractList<T> {
this.getters = Array(getters.size) { getters[it] }
}
constructor(getters: List<() -> T>) : super() {
this.getters = Array(getters.size) { getters[it] }
constructor(getters: Collection<() -> T>) : super() {
val iterator = getters.iterator()
this.getters = Array(getters.size) { iterator.next() }
}
constructor(getters: Stream<() -> T>) : super() {
this.getters = getters.toArray(::arrayOfNulls)
}
constructor(vararg getters: Supplier<T>) : super() {
this.getters = Array(getters.size) { getters[it]::get }
}
constructor(size: Int, provider: (Int) -> () -> T) {

View File

@ -1,6 +1,7 @@
package ru.dbotthepony.mc.otm.core
import com.google.common.collect.ImmutableSet
import java.util.stream.Stream
class SupplierMap<K, T> : AbstractMap<K, T> {
override val entries: Set<Map.Entry<K, T>>
@ -13,6 +14,10 @@ class SupplierMap<K, T> : AbstractMap<K, T> {
entries = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) })
}
constructor(mValues: Stream<Pair<K, () -> T>>) : super() {
entries = mValues.map { Entry(it.first, it.second) }.collect(ImmutableSet.toImmutableSet())
}
constructor(mValues: Map<K, () -> T>) : super() {
entries = ImmutableSet.copyOf(mValues.map { Entry(it.key, it.value) })
}