Split String and add into Hashmap without duplicate key and with multiple values.


Split String and add into Hashmap without duplicate key and with multiple values.


import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class SplitStringAddIntoHashMap {
public static void main(String[] args) {

// WE'RE GETTING THIS STRING FROM THE JAVASCRIPT
String str = ", ADAPTER:A1, CONTACTOR HOUSING:C1, DRIFT BOARD:DR1, DUTBOARD:DU1, DUTBOARD:DU2, ADAPTER:A2, CONTACTOR HOUSING:C2, DRIFT BOARD:DR2, DUTBOARD:DU3, DUTBOARD:DU4";

// VARIABLE DECLARATION
HashMap<String, Set<String>> bulkHwMap = null;
TreeSet<String> bulkHwValues = null;
bulkHwValues = new TreeSet<String>();
List<String> list = new ArrayList<String>();
String SplitStr[] = str.split(",");
bulkHwMap = new HashMap<String, Set<String>>();

// CREATE A LIST AND ADD THE EXACT SPLIT STRINGS
for (int i = 1; i < SplitStr.length; i++) {
String SplitKeyValues[] = SplitStr[i].split(":");
list.add(SplitKeyValues[0]);
}

// GET THE EXACT DUPLICATE ELEMENTS AND ADD THE VALUES INTO HASHMAP LIKE
// ONE KEY CONTAIN MORE THEN ONE VALUES.
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet) {
for (int i = 1; i < SplitStr.length; i++) {
String SplitKeyValues[] = SplitStr[i].split(":");
if (temp.equalsIgnoreCase(SplitKeyValues[0])) {
if (bulkHwMap.containsKey(SplitKeyValues[0])) {
bulkHwValues.add(SplitKeyValues[1]);
} else {
bulkHwValues = new TreeSet<String>();
bulkHwValues.add(SplitKeyValues[1]);
bulkHwMap.put(SplitKeyValues[0], bulkHwValues);
}
}
}
}

System.out
.println("Exact Row we'need to created : " + bulkHwMap.size());
System.out.println("Bulk Hardware Contains : " + bulkHwMap);

Iterator it = bulkHwMap.entrySet().iterator();

while (it.hasNext()) {
String vals = null;
Map.Entry pairs = (Map.Entry) it.next();
Set it1Set = (Set) pairs.getValue();
Iterator<String> it1 = it1Set.iterator();
String constructStr = "";
while (it1.hasNext()) {
constructStr = constructStr + it1.next() + ",";
}

System.out.println(constructStr.substring(0,
constructStr.length() - 1));

}
}
}

Output:

Exact Row we'need to created : 4
Bulk Hardware Contains : { DRIFT BOARD=[DR1, DR2],  DUTBOARD=[DU1, DU2, DU3, DU4],  CONTACTOR HOUSING=[C1, C2],  ADAPTER=[A1, A2]}
DR1,DR2
DU1,DU2,DU3,DU4
C1,C2

A1,A2


Comments