com.tivoli.twg.libs
Class StringSortSet

java.lang.Object
  extended bycom.tivoli.twg.libs.StringSortSet
All Implemented Interfaces:
java.io.Serializable

public class StringSortSet
extends java.lang.Object
implements java.io.Serializable

Container for a set of object references, each of which has an associated String value. The set is sorted by the associated String values (ascending order). This set is optimized for searches and insertion/deletion operations. The class also supports optimized bulk insertion of values (which should be used instead of large numbers of single inserts). Note: the String values used for sorting do NOT have to be unique, although the objects associated with duplicate values will be ordered arbitrarily relative to each other.

See Also:
Serialized Form

Field Summary
static long serialVersionUID
           
 
Constructor Summary
StringSortSet()
          Construtor for creating an initially empty set.
StringSortSet(int init_size)
          Constructor for creating an empty set with a given initial space allocation.
StringSortSet(java.lang.String[] init_sort_values, int start_sort_index, java.lang.Object[] init_objects, int start_obj_index, int length)
          Constructor for creating a set initialized with a given range within an array of integers.
StringSortSet(StringSortSet init_set)
          Constructor for creating a set initialized by another set
 
Method Summary
 java.lang.Object[] AccessObjects()
          Access internal array containing objects in set (read-only)
 java.lang.String[] AccessValues()
          Access internal array containing sort values in set (read-only)
 void AddUpdate(java.lang.String val, java.lang.Object obj)
          Add a single value and object into the set if it does not exist or if the value exists update the Object associated with it.
 boolean equals(StringSortSet s1)
          Compare the value of the StringSortSet with another StringSortSet
 int Find(java.lang.String val)
          Return index of any value/object pair with given value, or -1 if not in set
 int Find(java.lang.String val, java.lang.Object obj)
          Return index of given value/object pair in set, or -1 if not in set Note: match requires that both values are equal
 java.lang.Object[] FindAll(java.lang.String val)
          Return list of all objects which match given value in set
 java.lang.Object GetObject(int n)
          Return nth object element of set
 java.lang.Object GetObject(java.lang.String val)
          Return the object element of set associated with the given value
 java.lang.Object[] GetObjects()
          Return array containing copy of all objects in set.
 java.lang.String GetValue(int n)
          Return nth value element of set
 java.lang.String[] GetValues()
          Return array containing copy of all sort values in set.
 void InsertArray(java.lang.String[] val, int valstart, java.lang.Object[] obj, int objstart, int length)
          Insert an array of values into set.
 void InsertSet(StringSortSet insset)
          Insert StringSortSet into set.
 void InsertValue(java.lang.String val, java.lang.Object obj)
          Insert a single value and object into the set.
 int Length()
          Return length of set
 void MergeArray(java.lang.String[] val, int valstart, java.lang.Object[] obj, int objstart, int len)
          Merge sorted value/object pair arrays into our values
 boolean RemoveArray(java.lang.String[] val, int valstart, java.lang.Object[] obj, int objstart, int length)
          Remove an array of value/object pairs from set.
 void RemoveSet(StringSortSet remset)
          Remove StringSortSet into set.
 void RemoveSortedArray(java.lang.String[] val, int valstart, java.lang.Object[] obj, int objstart, int len)
          Remove sorted array of value/object pairs from current set
 boolean RemoveValue(java.lang.String val)
          Remove all value/object pair from set with given value.
 boolean RemoveValue(java.lang.String val, java.lang.Object obj)
          Remove value/object pair from set, if present.
 void reset()
          Empty the contents of the set.
 void setEqual(StringSortSet s1)
          Set set contents equal to given set
static void Sort(java.lang.String[] valset, int valstart, java.lang.Object[] objset, int objstart, int length)
          Sort a given array of sort values and corresponding objects, using quicksort.
 void sortValues()
          Sort values, if needed.
static boolean TestIfSorted(java.lang.String[] valset, int start, int length)
          Test if a range in an array is already sorted
 java.lang.String toString()
          String representation method (for debug)
 void unsortedInsertValue(java.lang.String val, java.lang.Object obj)
          Unsorted insert : quick way to add value without causing incremental sort.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

public static final long serialVersionUID
See Also:
Constant Field Values
Constructor Detail

StringSortSet

public StringSortSet()
Construtor for creating an initially empty set.


StringSortSet

public StringSortSet(int init_size)
Constructor for creating an empty set with a given initial space allocation.

Parameters:
init_size - - initial set space allocation (array size)

StringSortSet

public StringSortSet(java.lang.String[] init_sort_values,
                     int start_sort_index,
                     java.lang.Object[] init_objects,
                     int start_obj_index,
                     int length)
Constructor for creating a set initialized with a given range within an array of integers.

Parameters:
init_sort_values - - array containing initial sort values
start_sort_index - - index of start of sort values
init_objects - - array containing objects to be sorted
start_obj_index - - index of start of object to be sorted
length - - number of values

StringSortSet

public StringSortSet(StringSortSet init_set)
Constructor for creating a set initialized by another set

Parameters:
init_set - - set to use for initialization
Method Detail

InsertValue

public void InsertValue(java.lang.String val,
                        java.lang.Object obj)
Insert a single value and object into the set. Use InsertArray() for inserting multiple values.

Parameters:
val - - value to be inserted
obj - - object associated with value

unsortedInsertValue

public void unsortedInsertValue(java.lang.String val,
                                java.lang.Object obj)
Unsorted insert : quick way to add value without causing incremental sort. No other method calls should be made (other than additional unsortedInsertValue() calls) until sortValues() is called.

Parameters:
val - - value to be inserted
obj - - object associated with value

sortValues

public void sortValues()
Sort values, if needed. Only necessary if values inserted using unsortedInsertValue().


AddUpdate

public void AddUpdate(java.lang.String val,
                      java.lang.Object obj)
Add a single value and object into the set if it does not exist or if the value exists update the Object associated with it.

Parameters:
val - - value to be added/updated
obj - - object associated with value

InsertArray

public void InsertArray(java.lang.String[] val,
                        int valstart,
                        java.lang.Object[] obj,
                        int objstart,
                        int length)
Insert an array of values into set.

Parameters:
val - - array of values
valstart - - index of start of range of values
obj - - array of objects
objstart - - index of start of range of objects
length - - length of range of values to be inserted

InsertSet

public void InsertSet(StringSortSet insset)
Insert StringSortSet into set.

Parameters:
insset - - StringSortSet to be inserted

RemoveValue

public boolean RemoveValue(java.lang.String val,
                           java.lang.Object obj)
Remove value/object pair from set, if present. Use RemoveArray() for removing multiple values/object pairs. Both value and object reference provided must match the values previously inserted into the set.

Parameters:
val - - sort value of record to be removed
obj - - object reference of object to be removed
Returns:
true if found and removed, false if not found

RemoveValue

public boolean RemoveValue(java.lang.String val)
Remove all value/object pair from set with given value.

Parameters:
val - - sort value of record to be removed
Returns:
true if found and removed, false if not found

RemoveArray

public boolean RemoveArray(java.lang.String[] val,
                           int valstart,
                           java.lang.Object[] obj,
                           int objstart,
                           int length)
Remove an array of value/object pairs from set.

Parameters:
val - - array of values
valstart - - index of start of range of values
obj - - array of objects
objstart - - index of start of range of objects
length - - length of range of values and objects to be removed
Returns:
true any value/object pairs removed, false if none removed

RemoveSet

public void RemoveSet(StringSortSet remset)
Remove StringSortSet into set.

Parameters:
remset - - StringSortSet to be removed

Find

public final int Find(java.lang.String val,
                      java.lang.Object obj)
Return index of given value/object pair in set, or -1 if not in set Note: match requires that both values are equal

Parameters:
val - - value to be found in set
obj - - object reference to be found
Returns:
index of matching value, or -1 if not found

Find

public final int Find(java.lang.String val)
Return index of any value/object pair with given value, or -1 if not in set

Parameters:
val - - value to be found in set
Returns:
index of matching value, or -1 if not found

FindAll

public final java.lang.Object[] FindAll(java.lang.String val)
Return list of all objects which match given value in set

Parameters:
val - - value to be found in set
Returns:
array of object references with matching values

Length

public final int Length()
Return length of set

Returns:
number of elements in set

GetValue

public final java.lang.String GetValue(int n)
                                throws java.lang.ArrayIndexOutOfBoundsException
Return nth value element of set

Parameters:
n - - index (base 0) of element to be returned
Returns:
sort value at given index
Throws:
java.lang.ArrayIndexOutOfBoundsException - if invalid index

GetObject

public final java.lang.Object GetObject(int n)
                                 throws java.lang.ArrayIndexOutOfBoundsException
Return nth object element of set

Parameters:
n - - index (base 0) of element to be returned
Returns:
object reference at given index
Throws:
java.lang.ArrayIndexOutOfBoundsException - if invalid index

GetObject

public final java.lang.Object GetObject(java.lang.String val)
Return the object element of set associated with the given value

Returns:
object reference at given index
Throws:
java.lang.ArrayIndexOutOfBoundsException - if invalid index

GetValues

public final java.lang.String[] GetValues()
Return array containing copy of all sort values in set.

Returns:
allocated array containing all sort values in set

GetObjects

public final java.lang.Object[] GetObjects()
Return array containing copy of all objects in set.

Returns:
allocated array containing all objects in set

AccessValues

public final java.lang.String[] AccessValues()
Access internal array containing sort values in set (read-only)

Returns:
reference to internal array for set (may be Stringer than actual amount of data : use Length() to find actual length

AccessObjects

public final java.lang.Object[] AccessObjects()
Access internal array containing objects in set (read-only)

Returns:
reference to internal array for set (may be Stringer than actual amount of data : use Length() to find actual length

Sort

public static final void Sort(java.lang.String[] valset,
                              int valstart,
                              java.lang.Object[] objset,
                              int objstart,
                              int length)
Sort a given array of sort values and corresponding objects, using quicksort. The object array will be reordered such that the values in both the sort value array and object array maintain their correlation.

Parameters:
valset - - Array to be sorted
valstart - - index of start of data to be sorted
objset - - Array of objects associated with valset values
objstart - - index of start of objects in objset
length - - length of data to be sorted

TestIfSorted

public static final boolean TestIfSorted(java.lang.String[] valset,
                                         int start,
                                         int length)
Test if a range in an array is already sorted

Parameters:
valset - - array containing values
start - - start of range to test
length - - length of range to test
Returns:
true if already sorted, false if not

MergeArray

public void MergeArray(java.lang.String[] val,
                       int valstart,
                       java.lang.Object[] obj,
                       int objstart,
                       int len)
Merge sorted value/object pair arrays into our values

Parameters:
val - - array of sort values
valstart - - start index of sort values in array
obj - - array of objects
objstart - - start index of objects in array
len - - length of range in both arrays

RemoveSortedArray

public void RemoveSortedArray(java.lang.String[] val,
                              int valstart,
                              java.lang.Object[] obj,
                              int objstart,
                              int len)
Remove sorted array of value/object pairs from current set

Parameters:
val - - array of values to be removed
valstart - - index of start of range of values
obj - - array of objects to be removed
objstart - - index of start of range of objects
len - - length of range in both arrays

equals

public boolean equals(StringSortSet s1)
Compare the value of the StringSortSet with another StringSortSet

Parameters:
s1 - - set to be compared with
Returns:
true if sets are equal, false if not

reset

public void reset()
Empty the contents of the set.


setEqual

public void setEqual(StringSortSet s1)
Set set contents equal to given set

Parameters:
s1 - - set to be copied

toString

public java.lang.String toString()
String representation method (for debug)

Returns:
string representation