C# Class clojure.lang.PersistentTreeMap

Implements a persistent Red-Black Tree.

>Note that instances of this class are constant values i.e., add/remove etc return new values.See Okasaki, Kahrs, Larsen et al

Inheritance: APersistentMap, Reversible, Sorted
ファイルを表示 Open project: arohner/clojure-contrib Class Usage Examples

Public Properties

Property Type Description
EMPTY PersistentTreeMap

Protected Properties

Property Type Description
_comp IComparer
_count int

Public Methods

Method Description
DoCompare ( object k1, object k2 ) : int

Compare two keys.

GetEnumerator ( ) : IDictionaryEnumerator
PersistentTreeMap ( ) : System

Initialize a PersistentTreeMap using a default comparer.

PersistentTreeMap ( IPersistentMap meta, IComparer comp ) : System

Initialize a PersistentTreeMap using given metadata and comparer.

assoc ( object key, object val ) : IPersistentMap

Add a new key/value pair.

Overwrites an exising value for the key, if present.

assocEx ( object key, object val ) : IPersistentMap

Add a new key/value pair.

Throws an exception if key has a value already.

comparator ( ) : System.Collections.IComparer

Returns the comparer used to sort the elements in the collection.

Would be called Comparer except we need to match the JVM name.

containsKey ( object key ) : bool

Test if the map contains a key.

count ( ) : int

Gets the number of items in the collection.

create ( IDictionary other ) : IPersistentMap

Create a PersistentTreeMap from a dictionary.

create ( IComparer comp, ISeq items ) : PersistentTreeMap

Create a PersistentTreeMap from a comparison method an ISeq of alternating keys and values.

create ( ISeq items ) : PersistentTreeMap

Create a PersistentTreeMap from an ISeq of alternating keys and values.

empty ( ) : IPersistentCollection

Gets an empty collection of the same type.

entryAt ( object key ) : IMapEntry

Returns the key/value pair for this key.

entryKey ( object entry ) : object

Returns the key to be passed to the comparator to sort the element.

rseq ( ) : ISeq

Gets an ISeq to travers the sequence in reverse.

seq ( ) : ISeq

Gets an ISeq to allow first/rest iteration through the collection.

seq ( bool ascending ) : ISeq

Returns an ISeq to iterate through the collection in the designated direction.

seqFrom ( object key, bool ascending ) : ISeq

Returns an ISeq to iterate through the collection in the designated direction starting from a particular key.

The key need not be in the collection. If not present, the iteration will start with the first element with a key greater than (if asscending) or less than (if descending) the given key.

valAt ( object key ) : object

Gets the value associated with a key.

valAt ( object key, object notFound ) : object

Gets the value associated with a key.

withMeta ( IPersistentMap meta ) : IObj

Create a copy with new metadata.

without ( object key ) : IPersistentMap

Remove a key entry.

Private Methods

Method Description
Add ( Node t, object key, object val, clojure.lang.Box found ) : Node

Add a node for a key

Append ( Node left, Node right ) : Node
BalanceLeftDel ( object key, object val, Node del, Node right ) : Node
BalanceRightDel ( object key, object val, Node left, Node del ) : Node
LeftBalance ( object key, object val, Node ins, Node right ) : Node
MakeBlack ( object key, object val, Node left, Node right ) : Black
MakeRed ( object key, object val, Node left, Node right ) : Red
NodeAt ( object key ) : Node

Get the Node containing a key, or null if key not in tree.

PersistentTreeMap ( IComparer comp ) : System

Initialize a PersistentTreeMap using a given comparer.

PersistentTreeMap ( IComparer comp, Node tree, int count, IPersistentMap meta ) : System

Initialize a PersistentTreeMap using given internal data. (Internal use only.)

PersistentTreeMap ( IPersistentMap meta, IComparer comp, Node tree, int count ) : System
Remove ( Node t, object key, clojure.lang.Box found ) : Node
Replace ( Node t, object key, object val ) : Node
RightBalance ( object key, object val, Node left, Node ins ) : Node

Method Details

DoCompare() public method

Compare two keys.
public DoCompare ( object k1, object k2 ) : int
k1 object The first key.
k2 object The second key.
return int

GetEnumerator() public method

public GetEnumerator ( ) : IDictionaryEnumerator
return IDictionaryEnumerator

PersistentTreeMap() public method

Initialize a PersistentTreeMap using a default comparer.
public PersistentTreeMap ( ) : System
return System

PersistentTreeMap() public method

Initialize a PersistentTreeMap using given metadata and comparer.
public PersistentTreeMap ( IPersistentMap meta, IComparer comp ) : System
meta IPersistentMap
comp IComparer
return System

assoc() public method

Add a new key/value pair.
Overwrites an exising value for the key, if present.
public assoc ( object key, object val ) : IPersistentMap
key object The key
val object The value
return IPersistentMap

assocEx() public method

Add a new key/value pair.
Throws an exception if key has a value already.
public assocEx ( object key, object val ) : IPersistentMap
key object The key
val object The value
return IPersistentMap

comparator() public method

Returns the comparer used to sort the elements in the collection.
Would be called Comparer except we need to match the JVM name.
public comparator ( ) : System.Collections.IComparer
return System.Collections.IComparer

containsKey() public method

Test if the map contains a key.
public containsKey ( object key ) : bool
key object The key to test for membership
return bool

count() public method

Gets the number of items in the collection.
public count ( ) : int
return int

create() public static method

Create a PersistentTreeMap from a dictionary.
public static create ( IDictionary other ) : IPersistentMap
other IDictionary The dictionary to initialize from.
return IPersistentMap

create() public static method

Create a PersistentTreeMap from a comparison method an ISeq of alternating keys and values.
public static create ( IComparer comp, ISeq items ) : PersistentTreeMap
comp IComparer A comparison method.
items ISeq The ISeq of alternating keys and values.
return PersistentTreeMap

create() public static method

Create a PersistentTreeMap from an ISeq of alternating keys and values.
public static create ( ISeq items ) : PersistentTreeMap
items ISeq The ISeq of alternating keys and values.
return PersistentTreeMap

empty() public method

Gets an empty collection of the same type.
public empty ( ) : IPersistentCollection
return IPersistentCollection

entryAt() public method

Returns the key/value pair for this key.
public entryAt ( object key ) : IMapEntry
key object The key to retrieve
return IMapEntry

entryKey() public method

Returns the key to be passed to the comparator to sort the element.
public entryKey ( object entry ) : object
entry object An element in the collection.
return object

rseq() public method

Gets an ISeq to travers the sequence in reverse.
public rseq ( ) : ISeq
return ISeq

seq() public method

Gets an ISeq to allow first/rest iteration through the collection.
public seq ( ) : ISeq
return ISeq

seq() public method

Returns an ISeq to iterate through the collection in the designated direction.
public seq ( bool ascending ) : ISeq
ascending bool A flag indicating if the iteration is ascending or descending.
return ISeq

seqFrom() public method

Returns an ISeq to iterate through the collection in the designated direction starting from a particular key.
The key need not be in the collection. If not present, the iteration will start with the first element with a key greater than (if asscending) or less than (if descending) the given key.
public seqFrom ( object key, bool ascending ) : ISeq
key object The key at which to start the iteration.
ascending bool A flag indicating if the iteration is ascending or descending.
return ISeq

valAt() public method

Gets the value associated with a key.
public valAt ( object key ) : object
key object The key to look up.
return object

valAt() public method

Gets the value associated with a key.
public valAt ( object key, object notFound ) : object
key object The key to look up.
notFound object The value to return if the key is not present.
return object

withMeta() public method

Create a copy with new metadata.
public withMeta ( IPersistentMap meta ) : IObj
meta IPersistentMap The new metadata.
return IObj

without() public method

Remove a key entry.
public without ( object key ) : IPersistentMap
key object The key to remove
return IPersistentMap

Property Details

EMPTY public_oe static_oe property

An empty PersistentTreeMap.
public static PersistentTreeMap,clojure.lang EMPTY
return PersistentTreeMap

_comp protected_oe property

The method used to compare elements for sorting.
protected IComparer _comp
return IComparer

_count protected_oe property

Number of items in the tree.
protected int _count
return int