Do not consider basic data types and common abstract data types
For abstract data types created by programmers
A remove (Object O) method is provided by viewing API documents
**
First, I think of comparing data in different nodes one by one, list.remove(index i);
**
import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num = num; this.val = val; } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); list.add(new Node(5,"aa")); list.add(new Node(6,"aa")); list.add(new Node(7,"aa")); list.add(new Node(8,"aa")); list.add(new Node(9,"aa")); list.add(new Node(10,"aa")); list.add(new Node(11,"aa")); list.add(new Node(5,"aa")); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); for(int i = 0; i < list.size(); i++){ if(list.get(i).num == 5 && list.get(i).val.equals("aa")){ list.remove(i); } } for(Node c: list){ System.out.print(c.num + c.val + " "); } } }
Result: All nodes num== 5 and val= "aa" were deleted.
To increase the function of the node data, we need to add get (), set () method in the node class.
import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num = num; this.val = val; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getVal() { return val; } public void setVal(String val) { this.val = val; } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); list.add(new Node(5,"aa")); list.add(new Node(6,"aa")); list.add(new Node(7,"aa")); list.add(new Node(8,"aa")); list.add(new Node(9,"aa")); list.add(new Node(10,"aa")); list.add(new Node(11,"aa")); list.add(new Node(5,"aa")); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); /** * Change place */ for(int i = 0; i < list.size(); i++){ if(list.get(i).num == 5 && list.get(i).val.equals("aa")){ list.remove(i); /**Change Places**/ continue; } if(list.get(i).num == 10 && list.get(i).val.equals("aa")){ list.get(i).setVal("uu"); } } for(Node c: list){ System.out.print(c.num + c.val + " "); } } }
**
2. Delete the first searched node
list.remove(Object o);
import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num = num; this.val = val; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getVal() { return val; } public void setVal(String val) { this.val = val; } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); Node node1 = new Node(5,"aa"); Node node2 = new Node(6,"bb"); Node node3 = new Node(7,"cc"); Node node4 = new Node(8,"cc"); Node node5 = new Node(9,"aa1"); Node node6 = new Node(10,"cc"); list.add(node1); list.add(node2); list.add(node3); list.add(node4); list.add(node5); list.add(node6); list.add(node1); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); /**Change place*/ list.remove(node1); for (Node node0 : list){ System.out.print(node0.num + node0.val + " "); } } }
Result: Only the first Node1 node found was deleted.
**
Third, rewrite equel(); delete all nodes Node
**
import java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num = num; this.val = val; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getVal() { return val; } public void setVal(String val) { this.val = val; } @Override public int hashCode() { return super.hashCode(); } @Override public boolean equals(Object obj) { if(this == obj) return true; if(obj == null){ return false; } if(obj instanceof Node){ Node node = (Node) obj; if(node.num == this.num && node.val.equals(this.val)){ return true; } return false; } return false; } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); list.add(new Node(5,"aa")); list.add(new Node(6,"aa")); list.add(new Node(7,"aa")); list.add(new Node(8,"aa")); list.add(new Node(9,"aa")); list.add(new Node(10,"aa")); list.add(new Node(5,"aa")); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); Node delete = new Node(5,"aa"); for (int i = 0; i < list.size(); i++){ if(delete.equals(list.get(i))) { list.remove(i); } } for (Node node0 : list){ System.out.print(node0.num + node0.val + " "); } System.out.println(); } }
Result: Delete all eligible nodes
4. Not rewriting equal (); remove () method is invalid
import java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num = num; this.val = val; } // public int getNum() { // return num; // } // // public void setNum(int num) { // this.num = num; // } // // public String getVal() { // return val; // } // // public void setVal(String val) { // this.val = val; // } // // @Override // public int hashCode() { // return super.hashCode(); // } // // @Override // public boolean equals(Object obj) { // if(this == obj) return true; // if(obj == null){ // return false; // } // if(obj instanceof Node){ // Node node = (Node) obj; // if(node.num == this.num && node.val.equals(this.val)){ // return true; // } // return false; // } // return false; // } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); list.add(new Node(5,"aa")); list.add(new Node(6,"aa")); list.add(new Node(7,"aa")); list.add(new Node(8,"aa")); list.add(new Node(9,"aa")); list.add(new Node(10,"aa")); list.add(new Node(5,"aa")); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); Node delete = new Node(5,"aa"); list.remove(delete); // for (int i = 0; i < list.size(); i++){ // if(delete.equals(list.get(i))) { // list.remove(i); // } // } for (Node node0 : list){ System.out.print(node0.num + node0.val + " "); } System.out.println(); } }
Result:
Rewrite equal ();
import java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num = num; this.val = val; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getVal() { return val; } public void setVal(String val) { this.val = val; } @Override public int hashCode() { return super.hashCode(); } @Override public boolean equals(Object obj) { if(this == obj) return true; if(obj == null){ return false; } if(obj instanceof Node){ Node node = (Node) obj; if(node.num == this.num && node.val.equals(this.val)){ return true; } return false; } return false; } } public static void main(String[] args) { ArrayList<Node> list = new ArrayList<>(); list.add(new Node(5,"aa")); list.add(new Node(6,"aa")); list.add(new Node(7,"aa")); list.add(new Node(8,"aa")); list.add(new Node(9,"aa")); list.add(new Node(10,"aa")); list.add(new Node(5,"aa")); for(Node c:list){ System.out.print(c.num + c.val +" "); } System.out.println(); Node delete = new Node(5,"aa"); list.remove(delete); // for (int i = 0; i < list.size(); i++){ // if(delete.equals(list.get(i))) { // list.remove(i); // } // } for (Node node0 : list){ System.out.print(node0.num + node0.val + " "); } System.out.println(); } }
Result: