code_junkie

Should I use clone when adding a new element? When should clone be used?

Nov 10th, 2011
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. Graph g = new Graph();
  2.  
  3. Node n1 = new Node("#1");
  4. Node n2 = new Node("#2");
  5.  
  6. Edge e1 = new Edge("e#1", "#1", "#2");
  7.  
  8. // Each node is added like a reference
  9. g.addNode(n1);
  10. g.addNode(n2);
  11. g.addEdge(e1);
  12.  
  13. // This will break the internal integrity of the graph
  14. n1.setName("#3");
  15. g.getNode("#2").setName("#4");
  16.  
  17. public final class Node {
  18.  
  19. private final String name;
  20.  
  21. public Node(String name) {
  22. this.name = name;
  23. }
  24.  
  25. public String getName() { return name; }
  26. // note: no setter for name
  27. }
  28.  
  29. public class Graph {
  30. Set<Node> nodes = new HashSet<Node>();
  31. public void addNode(Node n) {
  32. // note: this assumes you've properly overridden
  33. // equals and hashCode in Node to make Nodes with the
  34. // same name .equal() and hash to the same value.
  35. if(nodes.contains(n)) {
  36. throw new IllegalArgumentException("Already in graph: " + node);
  37. }
  38. nodes.add(n);
  39. }
  40. }
Add Comment
Please, Sign In to add comment