- Use the newer binary search method of locating entries in get().

- Require a Comparable key in get() and containsKey().


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2698 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2003-07-11 01:21:23 +00:00
parent e85e6ad617
commit 71cd8b421a
@@ -1,5 +1,5 @@
// //
// $Id: DSet.java,v 1.28 2003/04/05 20:30:44 mdb Exp $ // $Id: DSet.java,v 1.29 2003/07/11 01:21:23 ray Exp $
package com.threerings.presents.dobj; package com.threerings.presents.dobj;
@@ -116,7 +116,7 @@ public class DSet
* Returns true if an entry in the set has a key that * Returns true if an entry in the set has a key that
* <code>equals()</code> the supplied key. Returns false otherwise. * <code>equals()</code> the supplied key. Returns false otherwise.
*/ */
public boolean containsKey (Object key) public boolean containsKey (Comparable key)
{ {
return get(key) != null; return get(key) != null;
} }
@@ -126,20 +126,13 @@ public class DSet
* the specified key or null if no entry could be found that matches * the specified key or null if no entry could be found that matches
* the key. * the key.
*/ */
public Entry get (Object key) public Entry get (Comparable key)
{ {
// scan the array looking for a matching entry // determine where we'll be adding the new element
int elength = _entries.length; int eidx = ArrayUtil.binarySearch(
for (int i = 0; i < elength; i++) { _entries, 0, _size, key, ENTRY_COMP);
// the array may be sparse
if (_entries[i] != null) { return (eidx < 0) ? null : _entries[eidx];
Entry elem = _entries[i];
if (elem.getKey().equals(key)) {
return elem;
}
}
}
return null;
} }
/** /**