Tasks Write tests and code for each of the following require

Tasks Write tests and code for each of the following requirements, in order. The words in bold indicate message names. Whenever a requirement says the user can \"ask whether...\", the expected answer is boolean. Whenever a requirement speaks of a \"particular\" item, then that item will be an argument to the method.

1. The user can create an Association between a key and a value. The Association responds to a toString() message by returning a string of the form: [key]:[value]

2. The user can ask an Association whether its keyContains a particular substring.

3. The user can ask an Association whether its valueContains a particular substring.

4. The user can ask an Association whether it contains a particular substring in either its key or value.

5. The user can ask an Association whether it hasKey that is a particular string.

6. The user can create an AssociationList that contains no Associations.

7. The user can add an existing Association to an AssociationList.

8. The user can add a new Association to an AssociationList by sending a key and a value.

9. The user can ask an AssociationList whether it contains a particular Association.

10.The user can ask an AssociationList whether it containsKey for a particular key.

11.The user can ask an AssociationList to lookup a particular key, returning a ArrayList of the Associations it contains that have that key.

12.The user can ask an AssociationList to findAll matches for a particular string, returning a ArrayList containing all Associations that have that string anywhere in their key or value.

13.The user can ask an AssociationList to remove a particular Association.

14.The user can ask an AssociationList to update every Association having a particular key by appending a particular string to its value.

You may not add so-called access methods to the Association class. That is, you may not add \"get\" or \"set\" methods, whose only behavior is to return a field\'s value or assign a field\'s value, respectively.

Solution

Association.java

public class Association{
    String key;
    String value;

    public Association(String key, String value){
        this.key = key;
        this.value = value;
    }

    public boolean keyContains(String substring){
        return this.key.contains(substring);
    }

    public boolean valueContains(String substring){
        return this.value.contains(substring);
    }

    public boolean keyOrValueContains(String substring){
        return this.key.contains(substring) || this.value.contains(substring);
    }

    public boolean hasKey(String key){
        return this.key.equals(key);
    }

  
}

AssociationList.java

import java.util.ArrayList;

public class AssociationList{
    ArrayList<Association> associationList;

    public AssociationList(){
        associationList = new ArrayList<Association>();
    }

    public void addAssociation(Association association){
        associationList.add(association);
    }

    public void addAssociation(String key, String value){
        associationList.add(new Association(key, value));
    }

    public boolean containsAssociation(Association association){
        return associationList.contains(association);
    }

    public boolean containsKey(String key){
        for (Association association: this.associationList){
            if (association.key.equals(key)){
                return true;
            }
        }
        return false;
    }

    public ArrayList associationsWithKey(String key){
        ArrayList<Association> associations = new ArrayList<Association>();

        for (Association association: this.associationList){
            if (association.key.equals(key)){
                associations.add(association);
            }
        }
        return associations;
    }

    public ArrayList<AssociationList> associationsKeyOrValueContainsKey(String key){
        ArrayList<Association> associations = new ArrayList<Association>();

        for (Association association: this.associationList){
            if (association.key.contains(key)){
                associations.add(association);
            }
        }
        return associations;
    }

    public void removeAssociation(Association association){
        if (this.associationList.contains(association)){
            this.associationList.remove(association);
        }
    }

    public void updateAssociations(String key, String append){
        for (Association association: this.associationList){
            if (association.key.equals(key)){
                association.value = association.value + append;
            }
        }
    }

}

Main.java

public class Main{
    public static void main(String[] args) {
        //Test Cases
        Association association = new Association(\"key\", \"value\");
        System.out.println(association.keyContains(\"key\"));
        System.out.println(association.keyOrValueContains(\"val\"));
        System.out.println(association.hasKey(\"key\"));

        AssociationList associationList = new AssociationList();
        associationList.addAssociation(association);
        associationList.addAssociation(\"key2\", \"value2\");
        System.out.println(associationList.containsAssociation(association));
        System.out.println(associationList.containsKey(\"key3\"));
        //AssociationList as = associationList.associationsWithKey(\"key\");
    }
}

Tasks Write tests and code for each of the following requirements, in order. The words in bold indicate message names. Whenever a requirement says the user can
Tasks Write tests and code for each of the following requirements, in order. The words in bold indicate message names. Whenever a requirement says the user can
Tasks Write tests and code for each of the following requirements, in order. The words in bold indicate message names. Whenever a requirement says the user can

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site