Java 8 Hands-on
Hi, I am Malathi Boggavarapu working at Volvo Group and i live in Gothenburg, Sweden. I have been working on Java since several years and had vast experience and knowledge across various technologies.
This post is all about different usecases which use Java 8 features which could be helpful for anyone.Please post your comments below or if you need to address any legacy code using Java 8 features.
Java 8 practical examples
Scenario 1
The following code excerpt explains the following scenario and also demonstrates the usage of Java 8 Stream, Filter and map.
- Split the IP Address with respect to a delimeter (,) and store it into a Collection.
- Filter out proxy addresses from the resulting Collection.
- Join the result with delimeter (,).
public static String filteredIpAddresses(){
String proxyAddresses = "10.12.12.13, 10.12.12.14";
String ipAdress = "46.150.151.10, 46.150.151.11";
Set<String> ipAdresses = Arrays.stream(ipAdress.split(",")).map(String::trim).collect(Collectors.toSet())
Set<String> ipAdresses = Arrays.stream(ipAdress.split(",")).map(String::trim).collect(Collectors.toSet())
Set<String> proxies = Arrays.stream(proxyAddresses.split(",")).map(String::trim).collect(Collectors.toSet())
List<String> filteredIpAddresses
ipAdresses.stream().filter(ipAdr -> !proxies.contains(ipAdr)).collect(Collectors.toList());
return String.join(",", filteredIpAddresses);
}
Scenario 2
If we want to split the String and store the values into the HashMap, below code excerpt demonstrates the usage of stream and map.
String exampleString = 1:Service1;2:Service2;3:Service3
Scenario 2
If we want to split the String and store the values into the HashMap, below code excerpt demonstrates the usage of stream and map.
String exampleString = 1:Service1;2:Service2;3:Service3
Arrays.stream(exampleString.split(";")).
map(s -> s.split(":")).collect(Collectors.toMap(e -> e[0], e ->e[1]))
Scenario 3
If we want to filter internal proxy addresses from real client IP address using stream, Map and Filter and Predicate, the following example would be useful
public static String filteredIpAddresses(){
String proxyAddresses = "10.12.12.13, 10.12.12.14";
String ipAdress = "46.150.151.10, 46.150.151.11";
Set<String> ipAdresses = Arrays.stream(ipAdress.split(",")).map(String::trim).collect(Collectors.toSet())
Set<String> ipAdresses = Arrays.stream(ipAdress.split(",")).map(String::trim).collect(Collectors.toSet())
Set<String> proxies = Arrays.stream(proxyAddresses.split(",")).map(String::trim).collect(Collectors.toSet())
List<String> filteredIpAddresses
ipAdresses.stream().filter(FilterProxyPredicate.internalProxyAddress(proxies)).collect(Collectors.toList());
return String.join(",", filteredIpAddresses);
}
The following Predicate is passed to the Filter inorder to filter out internal proxy addresses.
public class FilterProxyPredicate(){
public static Predicate<String> internalProxyAddress(List<String> proxies){
return proxy -> {
for(String proxyAddress : proxies){
SubnetUtils subnetUtil = new SubnetUtils(proxyAddress);
if(subnetUtil .isInRange(proxy))
return false;
}
return true;
};
}
}
Scenario 4
This is generic to Java and is not particularly related to Java 8. How to convert a single object to Set, Map or List using Collections? See below code excerpt.
Product product = new Product();
product.setName("Name 1");
product.setId(123L);
Set<Product> productSet = Collections.singleton(product);
Similarly for List and Map we have following.
Set<Product> productList = Collections.singletonList(product);
Map<Long, String> productMap = Collections.singletonMap(product.getId(), product.getName());
The following Predicate is passed to the Filter inorder to filter out internal proxy addresses.
public class FilterProxyPredicate(){
public static Predicate<String> internalProxyAddress(List<String> proxies){
return proxy -> {
for(String proxyAddress : proxies){
SubnetUtils subnetUtil = new SubnetUtils(proxyAddress);
if(subnetUtil .isInRange(proxy))
return false;
}
return true;
};
}
}
Scenario 4
This is generic to Java and is not particularly related to Java 8. How to convert a single object to Set, Map or List using Collections? See below code excerpt.
Product product = new Product();
product.setName("Name 1");
product.setId(123L);
Set<Product> productSet = Collections.singleton(product);
Similarly for List and Map we have following.
Set<Product> productList = Collections.singletonList(product);
Map<Long, String> productMap = Collections.singletonMap(product.getId(), product.getName());
-- to be continued
Comments
Post a Comment