[Neo] Neo indexed collection

Mattias Persson mattias at neotechnology.com
Wed Sep 3 14:27:57 CEST 2008

There has been a request for a sorted neo collection where you can use
your own Comparator. There has been neo collections in neo-utils for a
while, but none of them sorted.

Now there's a IndexedNeoCollection (https://trac.neo4j.org/ticket/103)
in neo-utils which does just that. Here's an example of usage. Note
that the collection takes <T extends NodeWrapper> and NodeWrapperImpl
is just a standard implementation of that interface. Many other
collections and the Link/LinkImpl classes in neo-utils also uses

    public class MyObject extends org.neo4j.util.NodeWrapperImpl
        // For now you must expose a public Constructor with Node as argument
        public MyObject( Node node )
            super( node );

        public void setName( String name )
            getUnderlyingNode().setProperty( "name", name );

        public String getName()
            return ( String ) getUnderlyingNode().getProperty( "name" );

    public class MyComparator implements Comparator<MyObject>
        public int compare( MyObject o1, MyObject o2 )
            return o1.getName().compareTo( o2.getName() );

    // And now, usage
    Node collectionRootNode = neo.createNode();
    Collection<MyObject> collection = new IndexedNeoCollection(
        neo, collectionRootNode, new MyComparator(), MyObject.class );

    Node objectNode = neo.createNode();
    MyObject myObject = new MyObject( objectNode );
    myObject.setName( "Mattias Persson" );
    collection.add( myObject );
    for ( MyObject object : collection )
        System.out.println( object.getName() );
    collection.remove( myObect );

    // The collection will create its own sub-root which will need
    // to get deleted before the 'collectionRootNode' is deleted.
    ( ( IndexedNeoCollection ) collection ).delete();

Hopefully this collection will work to most peoples satisfaction for now, enjoy!

/ Mattias

More information about the User mailing list