소스 검색

Custom DataSet implementation

Lortseam 4 년 전
부모
커밋
e9488e19ab
1개의 변경된 파일23개의 추가작업 그리고 2개의 파일을 삭제
  1. 23 2
      lib/src/main/java/me/lortseam/completeconfig/data/DataSet.java

+ 23 - 2
lib/src/main/java/me/lortseam/completeconfig/data/DataSet.java

@@ -3,13 +3,34 @@ package me.lortseam.completeconfig.data;
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
 import me.lortseam.completeconfig.data.structure.DataPart;
+import me.lortseam.completeconfig.data.structure.Identifiable;
 import me.lortseam.completeconfig.data.text.TranslationIdentifier;
+import org.jetbrains.annotations.NotNull;
 
-import java.util.LinkedHashSet;
+import java.util.AbstractSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
 @RequiredArgsConstructor(access = AccessLevel.PROTECTED)
-public abstract class DataSet<T extends DataPart> extends LinkedHashSet<T> {
+public abstract class DataSet<T extends DataPart & Identifiable> extends AbstractSet<T> {
 
+    private final Map<String, T> map = new LinkedHashMap<>();
     protected final TranslationIdentifier translation;
 
+    @Override
+    public @NotNull Iterator<T> iterator() {
+        return map.values().iterator();
+    }
+
+    @Override
+    public int size() {
+        return map.size();
+    }
+
+    @Override
+    public boolean add(T t) {
+        return map.put(t.getID(), t) != t;
+    }
+
 }