Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Use and Modify the ProvinceTerritory class below: Create a class called Canada.

ID: 3574719 • Letter: U

Question

Use and Modify the ProvinceTerritory class below:


Create a class called Canada. It contains an ArrayList of 13 ProvinceTerritory references:

Name ---------------------------------- Population
Ontario -------------------------------- 12,851,821
Quebec -------------------------------- 7,903,001
British Columbia --------------------- 4,400,057
Alberta --------------------------------- 3,645,257
Manitoba ------------------------------ 1,208,268
Saskatchewan ------------------------ 1,033,381
Nova Scotia --------------------------- 921,727
New Brunswick ---------------------- 751,171
Newfoundland and Labrador ----- 514,536
Prince Edward Island --------------- 140,204
Northwest Territories --------------- 41,462
Yukon ----------------------------------- 33,897
Nunavut -------------------------------- 31,906
Total: Canada ------------------------- 33,476,688

Populate the ArrayList inside the Canada constructor. The following code will be useful:

provinces.add(new ProvinceTerritory("british columbia", 4400057));
provinces.add(new new ProvinceTerritory("alberta", 3645257));
etc...


Create a method called public int getTotalPopulation() which uses an interator to add up all of the individual populations to calculate Canada’s total population.


Create a method called public String getLowestPopulation() which uses an interator to determine and return the name of the province/territory that has the lowest population.


Create a method called public int getPopulation(String province) which returns the population of the province (the parameter); if there is no such province, return a constant called NO_SUCH_PROVINCE, which is an int set to -1.


Note: Use iterators in all of the methods.


Write a method called public String[] getProvincesWithPopulationBetween(int min, int max) which returns an array of the names of all provinces/territories that have a population between min and max (inclusive)


Create a method called public boolean isProvinceInCanada(String name) which returns true if there is a province/territory in Canada with the given name (the parameter); otherwise returns false.


Create a method called public String[] getProvincesWhoseNameContains(String substring) which returns an array of the names of all provinces/territories whose name contains substring (the parameter). Hint: use the String class’s contains() method.


Create a method called public ProvinceTerritory[] getMoreProvincesWhoseNameContains(String substring) which returns an array of the names of all provinces/territories whose name contains substring (the parameter). Hint: use the String class’s contains() method.


Create a method called public String[] getProvincesWhoseNameStartsWith(char letter) which returns an array of the names of all provinces/territories whose name starts with letter (the parameter). Hint: use the String class’s startsWith() method or use the String class’s charAt(0) method.

------------------------------------------------------------------------------------

import java.util.ArrayList;
import java.util.Iterator;

public class ProvinceTerritory {

   String name;
   int population;

   public ProvinceTerritory() {
       super();
   }

   public ProvinceTerritory(String name, int population) {
       super();
       if (name != null && population >= 0) {
           this.name = name;
           this.population = population;
       }
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getPopulation() {
       return population;
   }

   public void setPopulation(int population) {
       this.population = population;
   }

   @Override
   public String toString() {
       return "ProvinceTerritory [name=" + name + ", population=" + population + "]";
   }
}

Explanation / Answer

import java.util.ArrayList;

import java.util.Iterator;

class ProvinceTerritory {

   String name;

   int population;

   public ProvinceTerritory() {

       super();

   }

   public ProvinceTerritory(String name, int population) {

       super();

       if (name != null && population >= 0) {

           this.name = name;

           this.population = population;

       }

   }

   public String getName() {

       return name;

   }

   public void setName(String name) {

       this.name = name;

   }

   public int getPopulation() {

       return population;

   }

   public void setPopulation(int population) {

       this.population = population;

   }

   @Override

   public String toString() {

       return "ProvinceTerritory [name=" + name + ", population=" + population + "]";

   }

}

public class Canada {

   ArrayList<ProvinceTerritory> provinces;

   public Canada() {

       super();

       provinces = new ArrayList<ProvinceTerritory>();

       provinces.add(new ProvinceTerritory("Ontario", 12851821));

       provinces.add(new ProvinceTerritory("Quebec", 7903001));

       provinces.add(new ProvinceTerritory("british columbia", 4400057));

       provinces.add(new ProvinceTerritory("alberta", 3645257));

       provinces.add(new ProvinceTerritory("Manitoba", 1208268));

       provinces.add(new ProvinceTerritory("Saskatchewan", 1033381));

       provinces.add(new ProvinceTerritory("Nova Scotia", 921727));

       provinces.add(new ProvinceTerritory("New Brunswick", 751171));

       provinces.add(new ProvinceTerritory("Newfoundland and Labrador", 514536));

       provinces.add(new ProvinceTerritory("Prince Edward Island ", 140204));

       provinces.add(new ProvinceTerritory("Northwest Territories", 41462));

       provinces.add(new ProvinceTerritory("Yukon", 33897));

       provinces.add(new ProvinceTerritory("Nunavut", 31906));

   }

   public int getTotalPopulation() {

       int total = 0;

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory provinces = itr.next();

           total += provinces.getPopulation();

       }

       return total;

   }

   public String getLowestPopulation() {

       int low = Integer.MAX_VALUE;

       String name = "";

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getPopulation() < low) {

               low = pt.getPopulation();

               name = pt.getName();

           }

       }

       return name;

   }

   public String getHighestPopulation() {

       int high = Integer.MIN_VALUE;

       String name = "";

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getPopulation() > high) {

               high = pt.getPopulation();

               name = pt.getName();

           }

       }

       return name;

   }

   public int getPopulation(String province) {

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getName().equals(province)) {

               return pt.getPopulation();

           }

       }

       return -1;

   }

   public boolean isProvinceInCanada(String name) {

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getName().equals(name)) {

               return true;

           }

       }

       return false;

   }

   public ProvinceTerritory[] getProvincesWhoseNameContains(String substring) {

       ProvinceTerritory[] pt_substring = new ProvinceTerritory[provinces.size()];

       int i = 0;

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getName().contains(substring)) {

               pt_substring[i] = pt;

               i++;

           }

       }

       return pt_substring;

   }

   public ArrayList<ProvinceTerritory> getMoreProvincesWhoseNameContains(String substring) {

       ArrayList<ProvinceTerritory> pt_substring = new ArrayList<ProvinceTerritory>();

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getName().contains(substring)) {

               pt_substring.add(pt);

           }

       }

       return pt_substring;

   }

   public ArrayList<String> getProvincesWhoseNameStartsWith(char letter) {

       ArrayList<String> pt_substring = new ArrayList<String>();

       Iterator<ProvinceTerritory> itr = provinces.iterator();

       while (itr.hasNext()) {

           ProvinceTerritory pt = itr.next();

           if (pt.getName().charAt(0) == letter) {

               pt_substring.add(pt.getName());

           }

       }

       return pt_substring;

   }

   public void print_arraylist_string(ArrayList<String> al) {

       Iterator<String> itr = al.iterator();

       while (itr.hasNext()) {

           System.out.print(itr.next() + " ");

       }

       System.out.println();

   }

   public void print_arraylist(ArrayList<ProvinceTerritory> al) {

       Iterator<ProvinceTerritory> itr = al.iterator();

       while (itr.hasNext()) {

           System.out.println(itr.next().toString());

       }

   }

   public void print_array(ProvinceTerritory[] al) {

       for (int i = 0; i < al.length; i++) {

           if (al[i] != null)

               System.out.println(al[i].toString());

       }

   }

   public static void main(String[] args) {

       Canada c = new Canada();

       System.out.println("Highest population in canada : "+c.getHighestPopulation());

       System.out.println("Lowest population in canada : "+c.getLowestPopulation());

       System.out.println("Total population in canada : "+c.getTotalPopulation());

       System.out.println("Population of British columbia : "+c.getPopulation("british columbia"));

       System.out.println("Is "british columbia" in canada ? "+c.isProvinceInCanada("british columbia"));

       System.out.println(" Provinces which has substring "New" in their name");

       c.print_array(c.getProvincesWhoseNameContains("New"));

       System.out.println(" Provinces which has substring "New" in their name");

       c.print_arraylist(c.getMoreProvincesWhoseNameContains("New"));

       System.out.println(" Provinces whose name starts with 'N'");

       c.print_arraylist_string(c.getProvincesWhoseNameStartsWith('N'));

   }

}