home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / SortableVector.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  2.1 KB  |  101 lines

  1. package com.sfs.util;
  2.  
  3. import java.io.IOException;
  4. import java.util.Enumeration;
  5. import java.util.Vector;
  6.  
  7. public class SortableVector extends Vector {
  8.    public static final int NOT_FOUND = -1;
  9.    public static final int DONT_SORT = 0;
  10.    public static final int SORT = 1;
  11.    Sortable Comparer;
  12.    Insertionsort Sorter;
  13.    Object searchObject;
  14.  
  15.    int _sortedSearch(int var1, int var2) {
  16.       if (var2 - var1 >= 4) {
  17.          int var3 = var1 + (var2 - var1) / 2;
  18.          int var4 = this.Comparer.compare(this.searchObject, ((Vector)this).elementAt(var3));
  19.          if (var4 < 0) {
  20.             return this._sortedSearch(0, var3);
  21.          } else {
  22.             return var4 > 0 ? this._sortedSearch(var3, var2) : var3;
  23.          }
  24.       } else {
  25.          while(var1 <= var2) {
  26.             if (this.Comparer.compare(this.searchObject, ((Vector)this).elementAt(var1)) == 0) {
  27.                return var1;
  28.             }
  29.  
  30.             ++var1;
  31.          }
  32.  
  33.          return -1;
  34.       }
  35.    }
  36.  
  37.    public int add(Object var1) {
  38.       if (this.Sorter != null) {
  39.          return this.Sorter.doInsertionsort(this, var1);
  40.       } else {
  41.          ((Vector)this).addElement(var1);
  42.          return ((Vector)this).indexOf(var1);
  43.       }
  44.    }
  45.  
  46.    public static void main(String[] var0) {
  47.       SortableVector var1 = new SortableVector(1, new StringSorter());
  48.       var1.add("Lars");
  49.       var1.add("Dirk");
  50.       var1.add("Frank");
  51.       System.out.println(((Vector)var1).toString());
  52.       if (var1.lookup("Lars") != -1) {
  53.          System.out.println("sa contains \"Lars\".");
  54.       }
  55.  
  56.       if (var1.lookup("A") == -1) {
  57.          System.out.println("sa dont contains \"A\".");
  58.       }
  59.  
  60.       try {
  61.          System.in.read();
  62.       } catch (IOException var2) {
  63.       }
  64.    }
  65.  
  66.    public int lookup(Object var1) {
  67.       if (((Vector)this).size() == 0) {
  68.          return -1;
  69.       } else if (this.Sorter != null) {
  70.          this.searchObject = var1;
  71.          return this._sortedSearch(0, ((Vector)this).size() - 1);
  72.       } else {
  73.          Enumeration var2 = ((Vector)this).elements();
  74.  
  75.          for(int var3 = 0; var2.hasMoreElements(); ++var3) {
  76.             if (this.Comparer.compare((String)var2.nextElement(), var1) == 0) {
  77.                return var3;
  78.             }
  79.          }
  80.  
  81.          return -1;
  82.       }
  83.    }
  84.  
  85.    public int lookup(Object var1, Sortable var2) {
  86.       Sortable var3 = this.Comparer;
  87.       this.Comparer = var2;
  88.       int var4 = this.lookup(var1);
  89.       this.Comparer = var3;
  90.       return var4;
  91.    }
  92.  
  93.    public SortableVector(int var1, Sortable var2) {
  94.       this.Comparer = var2;
  95.       if (var1 == 1) {
  96.          this.Sorter = new Insertionsort(var2);
  97.       }
  98.  
  99.    }
  100. }
  101.