I have written the below code in Java and trying to convert the same to Java 8. The code works as expected for the input (a List created by createTempList method) and output(a map whose key is the 1st decimal of the string and value is the other decimals of the string)
public static void main(String[] args) {
List<String> tempList = createTempList();
createMap8(tempList);
}
public static Map<String,List<String>> createMap8(final List<String> tempList) {
Map<String,List<String>> vlanFoos = new HashMap<String,List<String>>();
for(int i=0; i< tempList.size(); i++) {
String[] idsI = tempList.get(i).split("\\.");
String vlanI = idsI[0];
List<String> fooList = new ArrayList<String>();
for(int j = 0 ; j < tempList.size() ; j ++) {
String foo = "";
String[] idsJ = tempList.get(j).split("\\.");
String vlanJ = idsJ[0];
if(vlanI.equals(vlanJ)) {
for(int k = 1; k < idsJ.length; k++) {
foo = foo + idsJ[k];
if(idsJ.length - k != 1) {
foo = foo + ".";
}
}
}
if(!foo.isEmpty()) {
fooList.add(foo);
}
}
vlanFoos.put(vlanI, fooList);
}
return vlanFoos;
}
Input :
private static List<String> createTempList() {
List<String> tempList = new ArrayList<String>();
tempList.add("1.24.75.13.45.91.0");
tempList.add("1.88.213.110.66.182.127");
tempList.add("1579.204.45.224.38.12.161");
tempList.add("1580.204.45.224.38.12.161");
tempList.add("21.204.45.224.38.12.161");
tempList.add("39.204.45.224.38.12.161");
tempList.add("5.12.244.213.2.178.192");
tempList.add("5.204.45.224.38.12.161");
tempList.add("5.212.202.109.116.154.217");
tempList.add("5.212.202.109.116.154.218");
tempList.add("5.40.153.58.148.24.67");
tempList.add("5.76.177.205.33.164.80");
tempList.add("5.84.236.47.13.223.64");
tempList.add("5.88.213.110.66.182.128");
return tempList;
}
Output :
{1=[24.75.13.45.91.0, 88.213.110.66.182.127],
1579=[204.45.224.38.12.161],
5=[12.244.213.2.178.192, 204.45.224.38.12.161, 212.202.109.116.154.217, 212.202.109.116.154.218, 40.153.58.148.24.67, 76.177.205.33.164.80, 84.236.47.13.223.64, 88.213.110.66.182.128],
39=[204.45.224.38.12.161],
1580=[204.45.224.38.12.161],
21=[204.45.224.38.12.161]}
This is probably the most concise way to do it:
public static Map<String, List<String>> createMap8(final List <String> tempList) {
return tempList.stream()
.map(s -> s.split("\\.", 2))
.collect(groupingBy(p -> p[0], mapping(a -> a[1], toList())));
}
For the createTempList method, you can just use Arrays.asList
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With