1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

feat: Add stream functions

This commit is contained in:
2025-02-20 16:38:49 +08:00
parent 8e7ac263e7
commit 77b223b2cb
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnmodifiableView; import org.jetbrains.annotations.UnmodifiableView;
import java.util.*; import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -17,8 +18,8 @@ import java.util.stream.Stream;
* @author Carm * @author Carm
* @since 4.0.0 * @since 4.0.0
*/ */
public interface ConfigureSection { public interface ConfigureSection extends Cloneable {
/** /**
* Gets the parent section of this section. * Gets the parent section of this section.
* <p> * <p>
@@ -47,6 +48,17 @@ public interface ConfigureSection {
return getValues(deep).keySet(); return getValues(deep).keySet();
} }
/**
* Gets a set containing all primary keys in this section.
*
* @return Set of keys contained within this Section.
*/
@NotNull
@UnmodifiableView
default Set<String> keys() {
return getKeys(false);
}
/** /**
* Gets a set containing all values in this section. * Gets a set containing all values in this section.
* <p> * <p>
@@ -63,6 +75,36 @@ public interface ConfigureSection {
@UnmodifiableView @UnmodifiableView
Map<String, Object> getValues(boolean deep); Map<String, Object> getValues(boolean deep);
/**
* Gets a set containing all key-values in this section.
*
* @return Map of data values contained within this Section.
* @see #getValues(boolean)
*/
@NotNull
@UnmodifiableView
default Map<String, Object> values() {
return getValues(false);
}
/**
* Create a stream of all values in this section.
*
* @return Stream of all values in this section.
*/
default Stream<Map.Entry<String, Object>> stream() {
return values().entrySet().stream();
}
/**
* Iterates over all keys in this section.
*
* @param action The action to apply to each key.
*/
default void forEach(@NotNull BiConsumer<String, Object> action) {
values().forEach(action);
}
/** /**
* Sets the value at the given path. * Sets the value at the given path.
* <p> * <p>