Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /var/www/twodee/blog/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/twodee/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: Creation of dynamic property Automattic\Jetpack\Connection\Manager::$error_handler is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 91

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Instagram_Gallery::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-instagram-gallery.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Mailchimp::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-mailchimp.php on line 17

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 21

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$is_wpcom is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 22

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/gutenberg-available-extensions.php on line 20

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_site_specific_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 24

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Subscribers::$wpcom_is_wpcom_only_endpoint is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/subscribers.php on line 15

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property WPCOM_Widget_Goodreads::$shelves is deprecated in /var/www/twodee/blog/wp-content/plugins/jetpack/modules/widgets/goodreads.php on line 33

Deprecated: DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated in /var/www/twodee/blog/wp-includes/script-loader.php on line 348

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_classic_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 347

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 349

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$toolbar_block_side is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 350

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$panels_block is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 351

Deprecated: Creation of dynamic property Advanced_Editor_Tools::$used_block_buttons is deprecated in /var/www/twodee/blog/wp-content/plugins/tinymce-advanced/tinymce-advanced.php on line 354

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /var/www/twodee/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/twodee/blog/wp-includes/class-wp-term.php on line 198
» CS 145 Lecture 30 – Filter Pattern

teaching machines

CS 145 Lecture 30 – Filter Pattern

November 12, 2014 by . Filed under
Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383

Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /var/www/twodee/blog/wp-includes/category.php on line 383
cs145, fall 2014, lectures.

Agenda

TODO

What Does This Do?

  1. public static int ?(double[] numbers) {
      int n = 0;
      for (double number : numbers) {
        if (number < 0) {
          ++n;
        }
      }
      return n;
    }

  2. public static String[] ?(ArrayList<String> list) {
      String[] items = new String[list.size()];
      for (int i = 0; i < list.size(); ++i) {
        items[i] = list.get(i);
      }
      return items;
    }

  3. public static int[] ?(int[] raw) {
      int[] cooked = new int[raw.length];
      cooked[0] = raw[0];
      for (int i = 1; i < raw.length; ++i) {
        cooked[i] = cooked[i - 1] + raw[i];
      }
      return cooked;
    }

Program This

Filter

keeper = new list
for each element
  if element meets criteria
    add element to keepers

Code

StopWords.java

package lecture1112;

import java.util.ArrayList;

public class StopWords {
  public static void main(String[] args) {
    ArrayList<String> words = new ArrayList<>();
    
    words.add("the");
    words.add("quick");
    words.add("brow");
    words.add("wrinkles");
    words.add("at");
    words.add("the");
    words.add("slightest");
    words.add("provocation");
    
    ArrayList<String> stopWords = new ArrayList<>();
    stopWords.add("the");
    stopWords.add("at");
    stopWords.add("frac");
    
    ArrayList<String> wheat = filter(words, stopWords);
    System.out.println(wheat);
  }
  
  public static ArrayList<String> filter(ArrayList<String> words,
                                         ArrayList<String> stopWords) {
    ArrayList<String> keepers = new ArrayList<>();
    for (String word : words) {
      if (!stopWords.contains(word)) {
        keepers.add(word);
      }
    }
    return keepers;
  }
}

Country.java

package lecture1112;

public class Country {
  private String name;
  private int population1980;
  private int population2014;
  
  public Country(String name,
                 int population1980,
                 int population2014) {
    this.name = name;
    this.population1980 = population1980;
    this.population2014 = population2014;
  }

  public String getName() {
    return name;
  }

  public int getPopulation1980() {
    return population1980;
  }

  public int getPopulation2014() {
    return population2014;
  }
  
  public String toString() {
    return name;
  }
}

PopFilter.java

package lecture1112;

import java.util.ArrayList;

public class PopFilter {
  public static void main(String[] args) {
    Country[] countries = {
      new Country("Afghanistan", 13180431, 28397812),
      new Country("Albania", 2671997, 2856673),
      new Country("Algeria", 19475204, 37062820),
      new Country("American Samoa", 32456, 55636),
      new Country("Andorra", 36063, 77907),
      new Country("Angola", 7637141, 19549124),
      new Country("Antigua and Barbuda", 70301, 87233),
      new Country("Argentina", 28120135, 40374224),
      new Country("Armenia", 3096298, 2963496),
      new Country("Aruba", 60096, 101597),
      new Country("Australia", 14692000, 22031800),
      new Country("Austria", 7549433, 8389771),
      new Country("Azerbaijan", 6163990, 9054332),
      new Country("Bahamas, The", 210660, 360498),
      new Country("Bahrain", 359902, 1251513),
      new Country("Bangladesh", 82498440, 151125475),
      new Country("Barbados", 248784, 280396),
      new Country("Belarus", 9643000, 9490000),
      new Country("Belgium", 9859242, 10920272),
      new Country("Belize", 144151, 308595),
      new Country("Benin", 3718024, 9509798),
      new Country("Bermuda", 54670, 65124),
      new Country("Bhutan", 412745, 716939),
      new Country("Bolivia", 5368901, 10156601),
      new Country("Bosnia and Herzegovina", 4099903, 3845929),
      new Country("Botswana", 997534, 1969341),
      new Country("Brazil", 121740438, 195210154),
      new Country("Brunei Darussalam", 193049, 400569),
      new Country("Bulgaria", 8861535, 7395599),
      new Country("Burkina Faso", 6822840, 15540284),
      new Country("Burundi", 4126538, 9232753),
      new Country("Cabo Verde", 301591, 487601),
      new Country("Cambodia", 6699273, 14364931),
      new Country("Cameroon", 8932121, 20624343),
      new Country("Canada", 24593000, 34005274),
      new Country("Cayman Islands", 16164, 55509),
      new Country("Central African Republic", 2274089, 4349921),
      new Country("Chad", 4512758, 11720781),
      new Country("Chile", 11192384, 17150760),
      new Country("China", 981235000, 1337705000),
      new Country("Colombia", 26934591, 46444798),
      new Country("Comoros", 313598, 683081),
      new Country("Congo, Dem. Rep.", 26357407, 62191161),
      new Country("Congo, Rep.", 1796412, 4111715),
      new Country("Costa Rica", 2348427, 4669685),
      new Country("Cote d'Ivoire", 8265549, 18976588),
      new Country("Croatia", 4588000, 4417781),
      new Country("Cuba", 9835085, 11281768),
      new Country("Cyprus", 685406, 1103685),
      new Country("Czech Republic", 10304193, 10474410),
      new Country("Denmark", 5123027, 5547683),
      new Country("Djibouti", 359247, 834036),
      new Country("Dominica", 75313, 71167),
      new Country("Dominican Republic", 5825715, 10016797),
      new Country("Ecuador", 7909432, 15001072),
      new Country("Egypt, Arab Rep.", 44931971, 78075705),
      new Country("El Salvador", 4660556, 6218195),
      new Country("Equatorial Guinea", 220589, 696167),
      new Country("Eritrea", 2414647, 5741159),
      new Country("Estonia", 1477219, 1331475),
      new Country("Ethiopia", 35241209, 87095281),
      new Country("Faeroe Islands", 43010, 49581),
      new Country("Fiji", 635256, 860559),
      new Country("Finland", 4779535, 5363352),
      new Country("France", 55224670, 65023142),
      new Country("French Polynesia", 151702, 268065),
      new Country("Gabon", 726454, 1556222),
      new Country("Gambia, The", 604371, 1680640),
      new Country("Georgia", 4467700, 4452800),
      new Country("Germany", 78288576, 81776930),
      new Country("Ghana", 10802497, 24262901),
      new Country("Greece", 9642505, 11153454),
      new Country("Greenland", 50200, 56905),
      new Country("Grenada", 89004, 104677),
      new Country("Guam", 104131, 159440),
      new Country("Guatemala", 7001101, 14341576),
      new Country("Guinea", 4495479, 10876033),
      new Country("Guinea-Bissau", 818280, 1586624),
      new Country("Guyana", 776927, 786126),
      new Country("Haiti", 5691941, 9896400),
      new Country("Honduras", 3635862, 7621204),
      new Country("Hong Kong SAR, China", 5063100, 7024200),
      new Country("Hungary", 10711122, 10000023),
      new Country("Iceland", 228138, 318041),
      new Country("India", 698965575, 1205624648),
      new Country("Indonesia", 145494452, 240676485),
      new Country("Iran, Islamic Rep.", 38889520, 74462314),
      new Country("Iraq", 13653358, 30962380),
      new Country("Ireland", 3412800, 4560155),
      new Country("Isle of Man", 65108, 83992),
      new Country("Israel", 3878000, 7623600),
      new Country("Italy", 56433883, 59277417),
      new Country("Jamaica", 2133000, 2690824),
      new Country("Japan", 116782000, 127450459),
      new Country("Jordan", 2181000, 6046000),
      new Country("Kazakhstan", 14518924, 16321581),
      new Country("Kenya", 16267906, 40909194),
      new Country("Kiribati", 54510, 97743),
      new Country("Korea, Dem. Rep.", 17372172, 24500520),
      new Country("Korea, Rep.", 38123775, 49410366),
      new Country("Kosovo", 1521000, 1775680),
      new Country("Kuwait", 1371494, 2991580),
      new Country("Kyrgyz Republic", 3617400, 5447900),
      new Country("Lao PDR", 3250924, 6395713),
      new Country("Latvia", 2511701, 2097555),
      new Country("Lebanon", 2605294, 4341092),
      new Country("Lesotho", 1307403, 2008921),
      new Country("Liberia", 1892529, 3957990),
      new Country("Libya", 3078255, 6040612),
      new Country("Liechtenstein", 25869, 36120),
      new Country("Lithuania", 3413202, 3097282),
      new Country("Luxembourg", 364150, 506953),
      new Country("Macao SAR, China", 246236, 534626),
      new Country("Macedonia, FYR", 1895727, 2102216),
      new Country("Madagascar", 8746516, 21079532),
      new Country("Malawi", 6236824, 15013694),
      new Country("Malaysia", 13833739, 28275835),
      new Country("Maldives", 154316, 325694),
      new Country("Mali", 6735247, 13985961),
      new Country("Malta", 316645, 414508),
      new Country("Marshall Islands", 30581, 52428),
      new Country("Mauritania", 1534141, 3609420),
      new Country("Mauritius", 966000, 1280924),
      new Country("Mexico", 70353013, 117886404),
      new Country("Micronesia, Fed. Sts.", 72967, 103619),
      new Country("Moldova", 3397000, 3562045),
      new Country("Monaco", 26746, 36845),
      new Country("Mongolia", 1689621, 2712738),
      new Country("Montenegro", 579088, 620078),
      new Country("Morocco", 19798703, 31642360),
      new Country("Mozambique", 12142014, 23967265),
      new Country("Myanmar", 34474755, 51931231),
      new Country("Namibia", 1012761, 2178967),
      new Country("Nepal", 14384864, 26846016),
      new Country("Netherlands", 14149800, 16615394),
      new Country("New Caledonia", 143000, 250000),
      new Country("New Zealand", 3112900, 4367800),
      new Country("Nicaragua", 3250470, 5822209),
      new Country("Niger", 5834248, 15893746),
      new Country("Nigeria", 73698099, 159707780),
      new Country("Northern Mariana Islands", 17048, 53860),
      new Country("Norway", 4085620, 4889252),
      new Country("Oman", 1154375, 2802768),
      new Country("Pakistan", 79984297, 173149306),
      new Country("Palau", 12197, 20470),
      new Country("Panama", 1990062, 3678128),
      new Country("Papua New Guinea", 3215483, 6858945),
      new Country("Paraguay", 3198848, 6459721),
      new Country("Peru", 17328542, 29262830),
      new Country("Philippines", 47398432, 93444322),
      new Country("Poland", 35574150, 38183683),
      new Country("Portugal", 9766312, 10573100),
      new Country("Puerto Rico", 3206000, 3721208),
      new Country("Qatar", 223752, 1749713),
      new Country("Romania", 22242653, 20246871),
      new Country("Russian Federation", 139010000, 142385523),
      new Country("Rwanda", 5140786, 10836732),
      new Country("Samoa", 155554, 186029),
      new Country("San Marino", 21397, 30861),
      new Country("Sao Tome and Principe", 94953, 178228),
      new Country("Saudi Arabia", 9843265, 27258387),
      new Country("Senegal", 5568908, 12950564),
      new Country("Seychelles", 64400, 89770),
      new Country("Sierra Leone", 3180237, 5751976),
      new Country("Singapore", 2413900, 5076700),
      new Country("Slovak Republic", 4979815, 5391428),
      new Country("Slovenia", 1901315, 2048583),
      new Country("Solomon Islands", 230614, 526447),
      new Country("Somalia", 6089707, 9636173),
      new Country("South Africa", 27576000, 50895698),
      new Country("South Sudan", 4701961, 9940929),
      new Country("Spain", 37439035, 46576897),
      new Country("Sri Lanka", 14747000, 20653000),
      new Country("St. Kitts and Nevis", 43205, 52352),
      new Country("St. Lucia", 117984, 177397),
      new Country("St. Martin (French part)", 7580, 30235),
      new Country("St. Vincent and the Grenadines", 100506, 109316),
      new Country("Sudan", 14418063, 35652002),
      new Country("Suriname", 365616, 524960),
      new Country("Swaziland", 603373, 1193148),
      new Country("Sweden", 8310531, 9378126),
      new Country("Switzerland", 6319408, 7824909),
      new Country("Syrian Arab Republic", 8956156, 21532647),
      new Country("Tajikistan", 3917642, 7627326),
      new Country("Tanzania", 18686808, 44973330),
      new Country("Thailand", 47369137, 66402316),
      new Country("Timor-Leste", 580730, 1066409),
      new Country("Togo", 2720838, 6306014),
      new Country("Tonga", 93007, 104098),
      new Country("Trinidad and Tobago", 1085308, 1328095),
      new Country("Tunisia", 6384000, 10549100),
      new Country("Turkey", 43905790, 72137546),
      new Country("Turkmenistan", 2861000, 5041995),
      new Country("Turks and Caicos Islands", 7525, 30993),
      new Country("Tuvalu", 8051, 9827),
      new Country("Uganda", 12549779, 33987213),
      new Country("Ukraine", 49973757, 45870700),
      new Country("United Arab Emirates", 1014825, 8441537),
      new Country("United Kingdom", 56314216, 62766365),
      new Country("United States", 227225000, 309326295),
      new Country("Uruguay", 2915735, 3371982),
      new Country("Uzbekistan", 16026812, 28562400),
      new Country("Vanuatu", 115634, 236299),
      new Country("Venezuela, RB", 15096432, 29043283),
      new Country("Vietnam", 53700000, 86932500),
      new Country("Virgin Islands (U.S.)", 97000, 106267),
      new Country("Yemen, Rep.", 7906977, 22763008),
      new Country("Zambia", 5847241, 13216985),
      new Country("Zimbabwe", 7289069, 13076978),
    };
    
    ArrayList<Country> matches = filter(countries);
    System.out.println(matches);
  }

  private static ArrayList<Country> filter(Country[] countries) {
    ArrayList<Country> keepers = new ArrayList<>();
    
    for (Country country : countries) {
//      if (country.getPopulation1980() * 3 < country.getPopulation2014()) {
      if (country.getPopulation1980() > country.getPopulation2014()) {
        keepers.add(country);
      }
    }
    
    return keepers;
  }
}

Haiku