Thank you very much for your prompt response. And actually, before receiving your replies I kind of figured out a solution. My approach was the similar to the one that Tony proposed. But instead of using a while loop I did this: Bag edges = mynetwork.getEdges(agentA, null); int length = edges.size(); boolean exists = false; for (int node=0; node<len; node++){ Edge e = (Edge)(edges.get(node)); if(e.getOtherNode(agentA) == agentB){ exists = true; }else{continue;} } if (!exists){ mynetwork.addEdge(agentA, agentB, null); } Thank you again, Beth On Thu, 26 Sep 2013 15:24:26 -0400, Joey Harrison <[log in to unmask]> wrote: >Ahh, my mistake. > >Joey > > >On Thu, Sep 26, 2013 at 2:38 PM, Tony Bigbee <[log in to unmask]> wrote: > >> That won't work. getEdges returns a bag of Edge not Node objects. You >> have to inspect each Edge looking for the neighbor agentB. >> I made the same mistake in my first prototype, hoping I could chain calls >> together in one line... >> >> >> >> On Thu, Sep 26, 2013 at 12:05 PM, Joey Harrison <[log in to unmask]> wrote: >> >>> Bag has a contains method, so you can just do this: >>> >>> network.getEdges(agentA, null).contains(agentB) >>> >>> Joey >>> >>> >>> On Thu, Sep 26, 2013 at 12:07 PM, Tony Bigbee <[log in to unmask]>wrote: >>> >>>> I couldn't find a method in sim.field.network.Network like >>>> areNeighbors(Object o1, Object o2). >>>> >>>> So a starting point would be to use Network's getEdges method and >>>> iterate through the returned Bag looking for the other agent node in the >>>> edges. You could write a thin wrapper method to do the job and you would >>>> have a reusable component, like: >>>> >>>> public boolean areNeighbors(Network network, Object agentA, Object >>>> agentB) { >>>> Bag edges = network.getEdges(agentA, null); //obtain all edges that >>>> have agentA; the bag may be empty but it won't be null >>>> Iterator<Edge> iter = edges.iterator(); >>>> while (iter.hasNext()) { //iterate >>>> through all edges until we find agentB >>>> Edge e = iter.next(); >>>> if (e.getOtherNode(agentA)==agentB) { //use agentA as one >>>> node and see if the other node is agentB >>>> return true; >>>> //found it >>>> } >>>> } >>>> return false; //did not find it >>>> } >>>> >>>> Then to achieve what you originally asked: >>>> >>>> if ( !areNeighbors(mynetwork, agentA,agentB)) { >>>> mynetwork.addEdge(agentA,agentB,null); >>>> } >>>> >>>> Tony >>>> >>>> >>>> >>>> On Thu, Sep 26, 2013 at 3:54 AM, Beth Kar <[log in to unmask]> wrote: >>>> >>>>> Hello! >>>>> I am a newbie to mason (and java) and I am trying to dynamically create >>>>> an >>>>> undirected network. I want to add an edge between two nodes using the >>>>> following code: >>>>> >>>>> mynetwork.addEdge(AgentA, AgentB, null). >>>>> >>>>> How can I check with an if-then statement before hand if that edge >>>>> exists >>>>> before adding it? >>>>> >>>>> p.s. If ( edge between AgentA and AgentB doesn't exist) { >>>>> mynetwork.addEdge(AgentA, AgentB, null)} >>>>> >>>>> How do I represent the phrase 'edge between AgentA and AgentB doesn't >>>>> exist' >>>>> in java? >>>>> >>>>> Thank you in advance for your help! >>>>> Beth. >>>>> >>>> >>>> >>> >> >