Jelajahi Sumber

rmq: refactoring

Ranides Atterwim 10 tahun lalu
induk
melakukan
35cf7b9cfe

+ 0 - 9
assira/src/main/java/net/ranides/assira/collection/rmq/IntRMQList.java

@@ -15,15 +15,6 @@ public abstract class IntRMQList extends AIntList {
     
     protected static final String NSE = "Not supported by RMQList";
 
-    @Override
-    public abstract int size();
-    
-    @Override
-    public abstract boolean add(int value);
-    
-    @Override
-    public abstract int getInt(int index);
-    
     public abstract int findInt(int begin, int end);
         
     public final int findInt() {

+ 5 - 6
assira/src/main/java/net/ranides/assira/collection/rmq/IntRMQTable.java

@@ -14,7 +14,7 @@ import net.ranides.assira.math.MathUtils;
 @SuppressWarnings({
     "PMD.AvoidReassigningParameters"
 })
-public class IntRMQTable implements Serializable {
+public class IntRMQTable extends IntRMQList implements Serializable {
     
     private static final long serialVersionUID = 1L;
     
@@ -41,19 +41,18 @@ public class IntRMQTable implements Serializable {
         }
     }
     
+    @Override
     public int size() {
         return data.size();
     }
 
+    @Override
     public int getInt(int index) {
         return data.get(index);
     }
     
-    public int find() {
-        return find(0, size());
-    }
-    
-    public int find(int begin, int end) {
+    @Override
+    public int findInt(int begin, int end) {
         end--;
         if(end<=begin) {
             throw new IndexOutOfBoundsException();

+ 2 - 60
assira/src/main/java/net/ranides/assira/collection/rmq/RMQList.java

@@ -7,20 +7,11 @@
 package net.ranides.assira.collection.rmq;
 
 import java.util.AbstractList;
-import java.util.Collection;
 import java.util.List;
 
 public abstract class RMQList<T> extends AbstractList<T> {
     
-    protected static final String NSE = "Not supported by RMQList";
-    
     public abstract T find(int begin, int end);
-    
-    @Override
-    public abstract int size();
-    
-    @Override
-    public abstract boolean add(T value);
 
     @Override
     public abstract T get(int index);
@@ -28,59 +19,10 @@ public abstract class RMQList<T> extends AbstractList<T> {
     public final T find() {
         return find(0, size());
     }
-    
-    @Override
-    public boolean remove(Object value) {
-        throw new UnsupportedOperationException(NSE);
-    }
-    
-    @Override
-    public boolean addAll(Collection<? extends T> values) {
-        boolean ret = false;
-        for(T value : values) {
-            ret |= add(value);
-        }
-        return ret;
-    }
-
-    @Override
-    public boolean addAll(int index, Collection<? extends T> values) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
-    @Override
-    public boolean removeAll(Collection<?> values) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
-    @Override
-    public boolean retainAll(Collection<?> values) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
-    @Override
-    public T set(int index, T value) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
-    @Override
-    public void add(int index, T value) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
-    @Override
-    public T remove(int index) {
-        throw new UnsupportedOperationException(NSE);
-    }
-
+   
     @Override
     public List<T> subList(int fromIndex, int toIndex) {
-        throw new UnsupportedOperationException(NSE);
-    }
-    
-    @Override
-    public void clear() {
-        throw new UnsupportedOperationException(NSE);
+        throw new UnsupportedOperationException();
     }
     
 }

+ 0 - 5
assira/src/main/java/net/ranides/assira/collection/rmq/RMQTable.java

@@ -61,11 +61,6 @@ public class RMQTable<T> extends RMQList<T> implements Serializable {
         return data.get(index);
     }
 
-    @Override
-    public boolean add(T value) {
-        throw new UnsupportedOperationException("Not supported by RangeTable.");
-    }
-    
     private int minIndex(int i1, int i2) {
         T var1 = data.get(i1);
         T var2 = data.get(i2);

+ 5 - 5
assira/src/main/java/net/ranides/assira/collection/rmq/SegmentTree.java

@@ -14,7 +14,7 @@ import java.util.List;
 @SuppressWarnings({
     "PMD.AvoidReassigningParameters"
 })
-public class SegmentTree<T> extends RMQList<T> implements Serializable {
+public class RMQTree<T> extends RMQList<T> implements Serializable {
     
     private static final long serialVersionUID = 1L;
     
@@ -22,11 +22,11 @@ public class SegmentTree<T> extends RMQList<T> implements Serializable {
     
     protected final Strategy<T> segmenter;
     
-    public SegmentTree(Fold<T> function) {
-        this(new MemorySegmenter<T>(), function);
+    public RMQTree(Fold<T> function) {
+        this(new MemorySegmenter<>(), function);
     }
     
-    public SegmentTree(Strategy<T> segmenter, Fold<T> fold) {
+    public RMQTree(Strategy<T> segmenter, Fold<T> fold) {
         this.fold = fold;
         this.segmenter = segmenter;
     }
@@ -104,7 +104,7 @@ public class SegmentTree<T> extends RMQList<T> implements Serializable {
                 throw new IllegalStateException();
             }
             if(data.size() == level) {
-                data.add(new ArrayList<T>());
+                data.add(new ArrayList<>());
             }
             data.get(level).add(value);
             return data.get(level).size();