Changes and bug fixes in JGL 3.1.0 (??-??-9?): * Renamed packages to use "com" instead of "COM" in accordance with the new convention. * Finding algorithms now accept InputIterators as parameters. * Fixed bug in OrderedSet and OrderedMap where elements were incorrectly added with a partial ordering comparator. * Changed the way SList and DList do serialization to avoid StackOverflow errors. * Fixed typo in ConditionalEnumeration that caused some compilers to complain. * Fixed reallocation bug in Deque. * Added nextBucketSize() to HashMap and HashSet so derived classes can change expansion algorithms. * Fixed subtle bug in OrderedSet/OrderedMap clone() functions * Fixed bug with insert() in Buffer adapter classes. Changes and bug fixes in JGL 3.0.0 (9-23-97): * Package split. * Addition of ObjectSpace Voyager behaviors; see http://www.objectspace.com/voyager for more information on distributed technologies. * Improved performance of HashMap.values() and OrderedMap.values() * Removed deprecated classes OrderedMultiMap, OrderedMultiSet, HashMultiMap, HashMultiSet, and the *Integer functions and predicates. * Added ConditionalEnumeration. * Changed byte and short array adapter iterators to return the correct standard wrappers. * Undeprecated abstract class Map. * Added Sorting.iterSort(). * Added InputIterator.isCompatibleWith(). * Added companion Buffer classes for all primitive Array classes (FloatBuffer, IntegerBuffer, etc.) * Fleshed out primitive Array and Iterator classes, mainly adding primitive interfaces (floatAt(), put( float ), etc.) * Added ConstantFunction and ConstantPredicate. * HashSet set operations now properly return sets which have the same comparators as the parent. * Most Applying and Filtering methods now accept InputIterators as parameters. * Added IdentityFunction. * Removed public constructors for Hashing and OrderedSetOperations. * Made Hash a final class. * Added getStream() to ObjectOutputStreamIterator. * Added Unary and Binary xxxOr, xxxAnd, and xxxTern predicates. * Now uses the new .class syntax instead of getClass() where appropriate. * Fixed bug with Array constructor that takes an Object[] where later inserts cause ArrayStoreExceptions. An important side effect of this fix is this constructor no longer uses the argument as the initial underlying storage space. * Added explicit java.util.Random parameter to Shuffling methods. * Added SwappedBinaryFunction, a function object that returns the result of applying its operands to a BinaryFunction in the opposite order they were received. * Fixed problem with short-circuting in Filtering.remove(). * Fixed infinite loop in Array.remove(Object,int) and Deque.remove(Object,int). * All JGL enumerations now properly throw NoSuchElementException in nextElement(). * Moved get( int ) and put( int, Object ) from BidirectionalIterator into ForwardIterator. Changes and bug fixes in JGL 2.0.2 (3-12-97): * Fixed OrderedSet.put(); it wasn't replacing values as it should have. * Made InsertResult an inner class. * Changed full name of library from "Java(tm) Generic Library" to "JGL: Generic Collection Library for Java(tm)." Changes and bug fixes in JGL 2.0.1 (2-19-97): * Added classes DividesNumber, MinusNumber, ModulusNumber, NegateNumber, PlusNumber, TimesNumber, GreaterEqualNumber, GreaterNumber, LessEqualNumber, LessNumber, NegativeNumber, PositiveNumber, EqualNumber, and NotEqualNumber; deprecated similar *Integer family * Deprecated classes HashMultiMap, HashMultiSet, OrderedMultiMap, and OrderedMultiSet; added the functionality into the various Maps and Sets. * Added Counting.accumulate() and Counting.adjacentDifference() algorithms. * Improved synchronized usage in the containers. * Added InstanceOf function object. * remove() methods that can erase more than one object now return the number of objects erased except for in containers derived from Dictionary * Deprecated abstract class Map. * Removed classes GreatedCollatedString, GreaterEqualCollatedString, LessCollatedString, and LessEqualCollatedString because the class java.text.CollatedString was removed from the JDK * Renamed comparator classes LessCollation, LessEqualCollation, GreaterCollation, GreaterEqualCollation to LessCollator, etc. because of the underlying name changes in JDK 1.1 * Renamed comparator classes LessSortKey, LessEqualSortKey, GreaterSortKey, GreaterEqualSortKey to LessCollationKey, etc. because of the underlying name changes in JDK 1.1 * Added comparator classes EqualCollator, NotEqualCollator, EqualCollationKey, NotEqualCollationKey, EqualString, NotEqualString Changes and bug fixes in JGL 2.0 (1-22-97): * Added Serialization support to all containers. Iterators from any JGL sequential container may also be serialized. * Added ObjectOutputStreamIterator, an iterator that can be used to easily write objects to an ObjectOutputStream. * Made TreeNode, DListNode, SListNode, HashMapNode, and HashSetNode inner classes. * Added comparator classes LessCollation, LessEqualCollation, GreaterCollation, GreaterEqualCollation, LessSortKey, LessEqualSortKey, GreaterSortKey, GreaterEqualSortKey, LessCollatedString, LessEqualCollatedString, GreaterCollatedString, and GreaterEqualCollatedString. * Changed package name to COM.objectspace.jgl as suggested in Section 6.8.1 of the Java language specification. * Added SwappedBinaryPredicate, a function object that returns the result of applying its operands to a BinaryPredicate in the opposite order they were received. * Added allowExpansion() and expansionAllowed() to the hashing containers * Implemented Pair.hashCode(). * Made Pair aware of nulls. * Made Printing.toString() public. * Made SList.add() synchronized. * Fixed problem with OutOfBoundsException being erroneously thrown from Array.insert(). * Deque.pushFront() now works with an empty collection. * HashMap.equalRange() and HashSet.equalRange() now return Range( end(), end() ) instead of null when elements not found. * Added classes HashMultiMap, HashMultiSet, OrderedMultiMap, and OrderedMultiSet, deprecating the duplicate functionality of Maps and Sets. * Added default constructors to adaptive arrays. * Fixed problem with OrderedMap.lowerBound() and .upperBound(). * Added delimiter to OutputStreamIterator. * Added remove( Object, int ) to most containers. * Added lowerBound() and upperBound() to HashSet and HashMap. * Improved Hashing.orderedHash(). * Added Set.count(). * Added abstract class Map. * Concrete ForwardIterators (from HashMap, HashSet, and SList) now throw an exception when advance() is passed a negative offset. * Added Array.setSize(), mirroring the functionality of java.util.Vector.setSize().