Think about ArrayList remove () method, change or delete the value of abstract data type

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:

Keywords: Java

Added by taquitosensei on Wed, 02 Oct 2019 08:01:26 +0300