I have done a lot of these structures already, so before (re)doing a lot of these structures take a look at: https://svn.neo4j.org/components/utils/trunk/src/main/java/org/neo4j/util/(the old subversion repository, but the utils are quite up2date). Please take a look there and feel free to pull good implementations in to graph-collections. There are f.ex. queues (with workers picking items from them), linked lists, limited-sized lists and more.
2011/6/30 Niels Hoogeveen <[email protected]> > > For neo4j.graph-collections.list.List I suggest the following. > The graph collections List class is an implementation of the java.util.List > class, parameterized with Node, supporting all methods, except subList(int > start, int end). > Whenever nodes need to be stored as a list, the List class can be used, > guaranteeing the List contract is maintained. > package org.neo4j.collections.list; > > import org.neo4j.collections.list.List; > import org.neo4j.graphdb.Node; > import org.neo4j.kernel.EmbeddedGraphDatabase; > import java.util.ArrayList; > import org.neo4j.graphdb.Transaction; > > public class Demo { > > public static void main(String[] args){ > > > > //create/load database > EmbeddedGraphDatabase graphDb = new EmbeddedGraphDatabase( > "var/db" ); > > Transaction tx = graphDb.beginTx(); > > //create node representing the list > Node indexNode = graphDb.createNode(); > > //create list > List list = new List( indexNode, graphDb ); > > //create nodes to be added to the list > Node node1 = graphDb.createNode(); > Node node2 = graphDb.createNode(); > Node node3 = graphDb.createNode(); > Node node4 = graphDb.createNode(); > > //add nodes to the list one by one > list.add(node1); > list.add(node2); > list.add(node3); > list.add(node4); > > //remove entries by index > list.remove(3); > list.remove(2); > > //remove entries by node > list.remove(node2); > list.remove(node1); > > //add a collection of nodes to the list > ArrayList<Node> al1 = new ArrayList<Node>(); > al1.add(node1); > al1.add(node2); > al1.add(node3); > al1.add(node4); > > list.addAll(al1); > > //use the list in a for loop > for(Node n: list){ > System.out.println(n); > } > > //find first entry in the list containing a specific node > list.indexOf(node2); > > //find last entry in the list containing a specific node > list.lastIndexOf(node2); > > //retain a collection of nodes from the list > ArrayList<Node> al2 = new ArrayList<Node>(); > al2.add(node1); > al2.add(node3); > al2.add(node4); > > list.retainAll(al2); > > //remove a collection of nodes from the list > ArrayList<Node> al3 = new ArrayList<Node>(); > al2.add(node3); > al2.add(node4); > > list.removeAll(al3); > > //delete the list > list.delete(); > > tx.success(); > tx.finish(); > } > } > > > > From: [email protected] > > Date: Thu, 30 Jun 2011 17:49:46 +0200 > > To: [email protected] > > Subject: Re: [Neo4j] graph-collections List class > > > > Guys, > > if you can write some illustrative test code for the different > > collections, I could undertake to put some documentation skeleton into > > place that can be merged into the main manual and look like > > http://docs.neo4j.org/chunked/snapshot/. To start with, we could have > > it separately though. > > > > WDYT? > > > > Cheers, > > > > /peter neubauer > > > > GTalk: neubauer.peter > > Skype peter.neubauer > > Phone +46 704 106975 > > LinkedIn http://www.linkedin.com/in/neubauer > > Twitter http://twitter.com/peterneubauer > > > > http://www.neo4j.org - Your high performance graph > database. > > http://startupbootcamp.org/ - Ă–resund - Innovation happens HERE. > > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. > > > > > > > > On Thu, Jun 30, 2011 at 5:28 PM, Niels Hoogeveen > > <[email protected]> wrote: > > > > > > Today I added a List class to the graph-collections repo: > > > > https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/list > > > The List class implements the java.util.List<Node> interface. > > > Niels > > > _______________________________________________ > > > Neo4j mailing list > > > [email protected] > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > _______________________________________________ > > Neo4j mailing list > > [email protected] > > https://lists.neo4j.org/mailman/listinfo/user > > _______________________________________________ > Neo4j mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user > -- Mattias Persson, [[email protected]] Hacker, Neo Technology www.neotechnology.com _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

