How to effectively create list using if in java8?

soorapadman

I have started learning Java8.I have been following traditional way to create a list(for the below code) using if condition.My code is working but is there any effective way to achieve this using java8? Please let me know

private List<String> getDeliveryAddressTypeList() {
    List<String> deliveryAddressTypeList = new ArrayList<>();
    deliveryAddressTypeList.add(DeliveryAddressType.MY_DEFAULT_ADDRESS.getValue());
    if (SecurityUtils.getSubject().isPermitted(PermissionConstant.PHARMISA_DELIVERY_PFDEPORTS)) {
        deliveryAddressTypeList.add(DeliveryAddressType.DEPOT_ADDRESS.getValue());
    }
    if (SecurityUtils.getSubject().isPermitted(PermissionConstant.PHARMISA_DELIVERY_ALL_CONTACTS)) {
        deliveryAddressTypeList.add(DeliveryAddressType.CONTACT_ADDRESS.getValue());
    }
    if (SecurityUtils.getSubject().isPermitted(PermissionConstant.PHARMISA_DELIVERY_FREE_FROM_ADDRESS)) {
        deliveryAddressTypeList.add(DeliveryAddressType.AN_ALTERNATIVE_ADDRESS.getValue());
    }
    return deliveryAddressTypeList;
}
fps

I believe the cleanest way is as you have it. Nonetheless, you could use a helper method to avoid repeated if statements:

static void addIfPermitted(List<String> list, DeliveryAddressType addressType, 
    PermissionConstant permission) {

    if (SecurityUtils.getSubject().isPermitted(permission) {
        list.add(addressType.getValue());
    }
}

Now you can use this helper method this way:

List<String> deliveryAddressTypeList = new ArrayList<>(Arrays.asList(
    DeliveryAddressType.MY_DEFAULT_ADDRESS.getValue()));

addIfPermitted(deliveryAddressTypeList, 
    DeliveryAddressType.DEPOT_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_PFDEPORTS);

addIfPermitted(deliveryAddressTypeList, 
    DeliveryAddressType.CONTACT_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_ALL_CONTACTS);

addIfPermitted(deliveryAddressTypeList, 
    DeliveryAddressType.AN_ALTERNATIVE_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_FREE_FROM_ADDRESS);

If you want to use java 8 stuff, you could create a Map<DeliveryAddressType, PermissionConstant>:

List<String> deliveryAddressTypeList = new ArrayList<>(Arrays.asList(
    DeliveryAddressType.MY_DEFAULT_ADDRESS.getValue()));

Map<DeliveryAddressType, PermissionConstant> map = new HashMap<>();

map.put(DeliveryAddressType.DEPOT_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_PFDEPORTS);
map.put(DeliveryAddressType.CONTACT_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_ALL_CONTACTS);
map.put(DeliveryAddressType.AN_ALTERNATIVE_ADDRESS, 
    PermissionConstant.PHARMISA_DELIVERY_FREE_FROM_ADDRESS);

And then:

map.forEach((addressType, permission) -> 
    addIfPermitted(deliveryAddressList, adressType, permission));

Another way, using streams and the same map, but creating the final list from the map keys:

List<String> deliveryAddressTypeList = map.entrySet().stream()
    .filter(e -> SecurityUtils.getSubject().isPermitted(e.getValue()))
    .map(Map.Entry::getKey)
    .map(DeliveryAddressType::getValue)
    .collect(Collectors.toList());

deliveryAddressTypeList.add(DeliveryAddressType.MY_DEFAULT_ADDRESS.getValue());

Here you filter map entries and keep only the ones whose value (PermissionConsdtant) is permitted by the security. Then you transform each filtered entry into its key (DeliveryAddressType) and then transform each DeliveryAddressType into its value. Finally, you collect all these delivery address type values to a list.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to effectively create list using if in java8?

From Dev

How to partition a list by predicate using java8?

From Dev

How to check effectively if else condition while iteration in java8?

From Dev

How to effectively create controller or model without using php artisan?

From Dev

Java8 - "effectively final"

From Dev

Using Java8 Streams to create a list of objects from another two lists

From Dev

Create a joined string of the field-values of an object-list using streams and java8

From Dev

How to convert List of Lists to single List using Java8 streams

From Dev

How to create HashSet from List<Object> by taking multiple field values from object with Java8 Stream?

From Dev

Filtering List using Java8 streams

From Dev

how to create list of inner members using java 8 lambda?

From Dev

how to create list of inner members using java 8 lambda?

From Dev

java8 how to create nested lists?

From Dev

How to do filter a list in Java8?

From Dev

How to effectively approach powers timetsables using nested for loops in java?

From Dev

How to create a List of arrays using java

From Dev

how to set a weekday using java8

From Java

Reduce elements in a java list using Java8 streams

From Dev

How to create a list of String from a list of Object using reduce in Java 8?

From Dev

How to create a list of String from a list of Object using reduce in Java 8?

From Java

Create a char count array for a String using java8 features

From Dev

Create a char count array for a String using java8 features

From Dev

How to effectively process HashMap in order described by list?

From Java

Comparing two Integer list using java8 filter

From Dev

Sum distances between points in list using Java8 Streams

From Dev

Count number of objects in a list using Java8 Stream

From Dev

List of specification combine using java8 stream

From Dev

List filter in Java8 using isPresent method

From Dev

Comparing two Integer list using java8 filter

Related Related

  1. 1

    How to effectively create list using if in java8?

  2. 2

    How to partition a list by predicate using java8?

  3. 3

    How to check effectively if else condition while iteration in java8?

  4. 4

    How to effectively create controller or model without using php artisan?

  5. 5

    Java8 - "effectively final"

  6. 6

    Using Java8 Streams to create a list of objects from another two lists

  7. 7

    Create a joined string of the field-values of an object-list using streams and java8

  8. 8

    How to convert List of Lists to single List using Java8 streams

  9. 9

    How to create HashSet from List<Object> by taking multiple field values from object with Java8 Stream?

  10. 10

    Filtering List using Java8 streams

  11. 11

    how to create list of inner members using java 8 lambda?

  12. 12

    how to create list of inner members using java 8 lambda?

  13. 13

    java8 how to create nested lists?

  14. 14

    How to do filter a list in Java8?

  15. 15

    How to effectively approach powers timetsables using nested for loops in java?

  16. 16

    How to create a List of arrays using java

  17. 17

    how to set a weekday using java8

  18. 18

    Reduce elements in a java list using Java8 streams

  19. 19

    How to create a list of String from a list of Object using reduce in Java 8?

  20. 20

    How to create a list of String from a list of Object using reduce in Java 8?

  21. 21

    Create a char count array for a String using java8 features

  22. 22

    Create a char count array for a String using java8 features

  23. 23

    How to effectively process HashMap in order described by list?

  24. 24

    Comparing two Integer list using java8 filter

  25. 25

    Sum distances between points in list using Java8 Streams

  26. 26

    Count number of objects in a list using Java8 Stream

  27. 27

    List of specification combine using java8 stream

  28. 28

    List filter in Java8 using isPresent method

  29. 29

    Comparing two Integer list using java8 filter

HotTag

Archive