Using the filter function in kotlin












1















so the past couple of hours, i have been trying to understand how the filter function works in kotlin and if it has any correlation with that of Java.
basically, i have a code that's written in java and i would love to have it transcribed to kotlin



private List<Order> getFilteredOrders(Courier courier) {
String glovoBoxKeywords = glovoBoxWords.toLowerCase().split(",");
List<Vehicle> allowedVehicles = Arrays.asList(MOTORCYCLE, ELECTRIC_SCOOTER);

return orders.stream()
.filter(order -> {
String description = order.getDescription().toLowerCase();
if (!courier.getBox()) {
return Arrays.stream(glovoBoxKeywords).noneMatch(description::contains);
}

return true;
})
.filter(order -> {
Location pickupLocation = order.getPickup();
Location deliveryLocation = order.getDelivery();
Double distance = calculateDistance(pickupLocation, deliveryLocation);

if (distance > longDeliveryDistance) {
return allowedVehicles.contains(courier.getVehicle());
}

return true;
})
.collect(Collectors.toList());
}


i tried this but i got at this, and was literally stuck :(



 private fun findFilteredOrder(courier: Courier) : List<Order> {
val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

orderList.filter { order ->
val description = order.getDescription().toLowerCase()
if(!courier.getBox()) {

}
true
}.filter {
val pickupLocation = it.getPickup()
val deliveryLocation = it.getDelivery()
val distance = calculateDistance(deliveryLocation, pickupLocation)

if(distance > longDeliveryDistance) {
courier.getVehicle() in allowedVehicles
}
true
}
}


Please this is my first attempt and doing something with kotlin, so please go easy guys. thanks, also i'd be appreciative if anyone could help me with informative stuff as to how to understand these kotlin functions better. let, apply, associateBy... etc.. THANKS










share|improve this question



























    1















    so the past couple of hours, i have been trying to understand how the filter function works in kotlin and if it has any correlation with that of Java.
    basically, i have a code that's written in java and i would love to have it transcribed to kotlin



    private List<Order> getFilteredOrders(Courier courier) {
    String glovoBoxKeywords = glovoBoxWords.toLowerCase().split(",");
    List<Vehicle> allowedVehicles = Arrays.asList(MOTORCYCLE, ELECTRIC_SCOOTER);

    return orders.stream()
    .filter(order -> {
    String description = order.getDescription().toLowerCase();
    if (!courier.getBox()) {
    return Arrays.stream(glovoBoxKeywords).noneMatch(description::contains);
    }

    return true;
    })
    .filter(order -> {
    Location pickupLocation = order.getPickup();
    Location deliveryLocation = order.getDelivery();
    Double distance = calculateDistance(pickupLocation, deliveryLocation);

    if (distance > longDeliveryDistance) {
    return allowedVehicles.contains(courier.getVehicle());
    }

    return true;
    })
    .collect(Collectors.toList());
    }


    i tried this but i got at this, and was literally stuck :(



     private fun findFilteredOrder(courier: Courier) : List<Order> {
    val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
    val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

    orderList.filter { order ->
    val description = order.getDescription().toLowerCase()
    if(!courier.getBox()) {

    }
    true
    }.filter {
    val pickupLocation = it.getPickup()
    val deliveryLocation = it.getDelivery()
    val distance = calculateDistance(deliveryLocation, pickupLocation)

    if(distance > longDeliveryDistance) {
    courier.getVehicle() in allowedVehicles
    }
    true
    }
    }


    Please this is my first attempt and doing something with kotlin, so please go easy guys. thanks, also i'd be appreciative if anyone could help me with informative stuff as to how to understand these kotlin functions better. let, apply, associateBy... etc.. THANKS










    share|improve this question

























      1












      1








      1








      so the past couple of hours, i have been trying to understand how the filter function works in kotlin and if it has any correlation with that of Java.
      basically, i have a code that's written in java and i would love to have it transcribed to kotlin



      private List<Order> getFilteredOrders(Courier courier) {
      String glovoBoxKeywords = glovoBoxWords.toLowerCase().split(",");
      List<Vehicle> allowedVehicles = Arrays.asList(MOTORCYCLE, ELECTRIC_SCOOTER);

      return orders.stream()
      .filter(order -> {
      String description = order.getDescription().toLowerCase();
      if (!courier.getBox()) {
      return Arrays.stream(glovoBoxKeywords).noneMatch(description::contains);
      }

      return true;
      })
      .filter(order -> {
      Location pickupLocation = order.getPickup();
      Location deliveryLocation = order.getDelivery();
      Double distance = calculateDistance(pickupLocation, deliveryLocation);

      if (distance > longDeliveryDistance) {
      return allowedVehicles.contains(courier.getVehicle());
      }

      return true;
      })
      .collect(Collectors.toList());
      }


      i tried this but i got at this, and was literally stuck :(



       private fun findFilteredOrder(courier: Courier) : List<Order> {
      val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
      val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

      orderList.filter { order ->
      val description = order.getDescription().toLowerCase()
      if(!courier.getBox()) {

      }
      true
      }.filter {
      val pickupLocation = it.getPickup()
      val deliveryLocation = it.getDelivery()
      val distance = calculateDistance(deliveryLocation, pickupLocation)

      if(distance > longDeliveryDistance) {
      courier.getVehicle() in allowedVehicles
      }
      true
      }
      }


      Please this is my first attempt and doing something with kotlin, so please go easy guys. thanks, also i'd be appreciative if anyone could help me with informative stuff as to how to understand these kotlin functions better. let, apply, associateBy... etc.. THANKS










      share|improve this question














      so the past couple of hours, i have been trying to understand how the filter function works in kotlin and if it has any correlation with that of Java.
      basically, i have a code that's written in java and i would love to have it transcribed to kotlin



      private List<Order> getFilteredOrders(Courier courier) {
      String glovoBoxKeywords = glovoBoxWords.toLowerCase().split(",");
      List<Vehicle> allowedVehicles = Arrays.asList(MOTORCYCLE, ELECTRIC_SCOOTER);

      return orders.stream()
      .filter(order -> {
      String description = order.getDescription().toLowerCase();
      if (!courier.getBox()) {
      return Arrays.stream(glovoBoxKeywords).noneMatch(description::contains);
      }

      return true;
      })
      .filter(order -> {
      Location pickupLocation = order.getPickup();
      Location deliveryLocation = order.getDelivery();
      Double distance = calculateDistance(pickupLocation, deliveryLocation);

      if (distance > longDeliveryDistance) {
      return allowedVehicles.contains(courier.getVehicle());
      }

      return true;
      })
      .collect(Collectors.toList());
      }


      i tried this but i got at this, and was literally stuck :(



       private fun findFilteredOrder(courier: Courier) : List<Order> {
      val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
      val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

      orderList.filter { order ->
      val description = order.getDescription().toLowerCase()
      if(!courier.getBox()) {

      }
      true
      }.filter {
      val pickupLocation = it.getPickup()
      val deliveryLocation = it.getDelivery()
      val distance = calculateDistance(deliveryLocation, pickupLocation)

      if(distance > longDeliveryDistance) {
      courier.getVehicle() in allowedVehicles
      }
      true
      }
      }


      Please this is my first attempt and doing something with kotlin, so please go easy guys. thanks, also i'd be appreciative if anyone could help me with informative stuff as to how to understand these kotlin functions better. let, apply, associateBy... etc.. THANKS







      filter kotlin






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 2 at 1:14









      olatunji oniyideolatunji oniyide

      397




      397
























          1 Answer
          1






          active

          oldest

          votes


















          2














          The filter function in Kotlin Collections has the same principle as other frameworks/libraries, including Java Streams. Given a predicate (a function from the type of the collection to Boolean) it will return a new collection with the elements matching the predicate. You can find more information and examples of other functions and operators in the official documentation and here.



          Your code was almost there, I translate the Java Stream operation to Kotlin List and rewrite the return statements to remove the redundant if



          private fun findFilteredOrder(courier: Courier) : List<Order> {
          val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
          val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

          orderList.filter { order ->
          val description = order.getDescription().toLowerCase()
          courier.getBox() || glovoBoxKeywords.none { it in description }
          }.filter { order ->
          val pickupLocation = order.getPickup()
          val deliveryLocation = order.getDelivery()
          val distance = calculateDistance(deliveryLocation, pickupLocation)

          distance <= longDeliveryDistance || courier.getVehicle() in allowedVehicles
          }
          }





          share|improve this answer


























          • Thanks Omar for the response and the links.

            – olatunji oniyide
            Jan 2 at 7:19











          • @olatunjioniyide You're welcome

            – Omar Mainegra
            Jan 2 at 14:57











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000218%2fusing-the-filter-function-in-kotlin%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          The filter function in Kotlin Collections has the same principle as other frameworks/libraries, including Java Streams. Given a predicate (a function from the type of the collection to Boolean) it will return a new collection with the elements matching the predicate. You can find more information and examples of other functions and operators in the official documentation and here.



          Your code was almost there, I translate the Java Stream operation to Kotlin List and rewrite the return statements to remove the redundant if



          private fun findFilteredOrder(courier: Courier) : List<Order> {
          val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
          val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

          orderList.filter { order ->
          val description = order.getDescription().toLowerCase()
          courier.getBox() || glovoBoxKeywords.none { it in description }
          }.filter { order ->
          val pickupLocation = order.getPickup()
          val deliveryLocation = order.getDelivery()
          val distance = calculateDistance(deliveryLocation, pickupLocation)

          distance <= longDeliveryDistance || courier.getVehicle() in allowedVehicles
          }
          }





          share|improve this answer


























          • Thanks Omar for the response and the links.

            – olatunji oniyide
            Jan 2 at 7:19











          • @olatunjioniyide You're welcome

            – Omar Mainegra
            Jan 2 at 14:57
















          2














          The filter function in Kotlin Collections has the same principle as other frameworks/libraries, including Java Streams. Given a predicate (a function from the type of the collection to Boolean) it will return a new collection with the elements matching the predicate. You can find more information and examples of other functions and operators in the official documentation and here.



          Your code was almost there, I translate the Java Stream operation to Kotlin List and rewrite the return statements to remove the redundant if



          private fun findFilteredOrder(courier: Courier) : List<Order> {
          val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
          val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

          orderList.filter { order ->
          val description = order.getDescription().toLowerCase()
          courier.getBox() || glovoBoxKeywords.none { it in description }
          }.filter { order ->
          val pickupLocation = order.getPickup()
          val deliveryLocation = order.getDelivery()
          val distance = calculateDistance(deliveryLocation, pickupLocation)

          distance <= longDeliveryDistance || courier.getVehicle() in allowedVehicles
          }
          }





          share|improve this answer


























          • Thanks Omar for the response and the links.

            – olatunji oniyide
            Jan 2 at 7:19











          • @olatunjioniyide You're welcome

            – Omar Mainegra
            Jan 2 at 14:57














          2












          2








          2







          The filter function in Kotlin Collections has the same principle as other frameworks/libraries, including Java Streams. Given a predicate (a function from the type of the collection to Boolean) it will return a new collection with the elements matching the predicate. You can find more information and examples of other functions and operators in the official documentation and here.



          Your code was almost there, I translate the Java Stream operation to Kotlin List and rewrite the return statements to remove the redundant if



          private fun findFilteredOrder(courier: Courier) : List<Order> {
          val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
          val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

          orderList.filter { order ->
          val description = order.getDescription().toLowerCase()
          courier.getBox() || glovoBoxKeywords.none { it in description }
          }.filter { order ->
          val pickupLocation = order.getPickup()
          val deliveryLocation = order.getDelivery()
          val distance = calculateDistance(deliveryLocation, pickupLocation)

          distance <= longDeliveryDistance || courier.getVehicle() in allowedVehicles
          }
          }





          share|improve this answer















          The filter function in Kotlin Collections has the same principle as other frameworks/libraries, including Java Streams. Given a predicate (a function from the type of the collection to Boolean) it will return a new collection with the elements matching the predicate. You can find more information and examples of other functions and operators in the official documentation and here.



          Your code was almost there, I translate the Java Stream operation to Kotlin List and rewrite the return statements to remove the redundant if



          private fun findFilteredOrder(courier: Courier) : List<Order> {
          val glovoBoxKeyWords = glovoBoxWords.toLowerCase().split(",")
          val allowedVehicles = listOf(Vehicle.ELECTRIC_SCOOTER, Vehicle.MOTORCYCLE)

          orderList.filter { order ->
          val description = order.getDescription().toLowerCase()
          courier.getBox() || glovoBoxKeywords.none { it in description }
          }.filter { order ->
          val pickupLocation = order.getPickup()
          val deliveryLocation = order.getDelivery()
          val distance = calculateDistance(deliveryLocation, pickupLocation)

          distance <= longDeliveryDistance || courier.getVehicle() in allowedVehicles
          }
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 2 at 10:52









          EpicPandaForce

          49.6k14132257




          49.6k14132257










          answered Jan 2 at 5:02









          Omar MainegraOmar Mainegra

          2,3971020




          2,3971020













          • Thanks Omar for the response and the links.

            – olatunji oniyide
            Jan 2 at 7:19











          • @olatunjioniyide You're welcome

            – Omar Mainegra
            Jan 2 at 14:57



















          • Thanks Omar for the response and the links.

            – olatunji oniyide
            Jan 2 at 7:19











          • @olatunjioniyide You're welcome

            – Omar Mainegra
            Jan 2 at 14:57

















          Thanks Omar for the response and the links.

          – olatunji oniyide
          Jan 2 at 7:19





          Thanks Omar for the response and the links.

          – olatunji oniyide
          Jan 2 at 7:19













          @olatunjioniyide You're welcome

          – Omar Mainegra
          Jan 2 at 14:57





          @olatunjioniyide You're welcome

          – Omar Mainegra
          Jan 2 at 14:57




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000218%2fusing-the-filter-function-in-kotlin%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas