import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static List<String> mergeData(List<String> dataStrings) {
ArrayList<String> mergedStrings = new ArrayList<>();
HashMap<String, String> map = new HashMap<>();
Map<String, String> sortedMap;
for(String line : dataStrings){
//System.err.println(line);
String[] fields = line.split(";");
Arrays.sort(fields);
String name="";
String sortedFields = "";
int i=0;
for(String field : fields){
//System.err.println(field);
if (field.contains("Name="))
name = field;
else{
if(i==0) {
sortedFields += field;
i++;
}else
sortedFields+=";"+field;
}
}
if(!map.containsKey(name))
map.put(name,sortedFields);
else{
System.err.println(name + " : Clé déjà existante dans la map");
String [] fieldsToSort = (map.get(name) + ";" + sortedFields).split(";");
Arrays.sort(fieldsToSort);
sortedFields="";
int j=0;
for(String s : fieldsToSort){
if(j==0) {
sortedFields += s;
j++;
}else
sortedFields+=";"+s;
}
//System.err.println("Field mergé trié : " + sortedFields);
map.put(name, sortedFields);
}
}
//tri hashmap
sortedMap = new TreeMap<>(map);
Set set = sortedMap.entrySet();
Iterator it = set.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
mergedStrings.add(entry.getKey() + ";" + entry.getValue());
}
return mergedStrings;
}
public static void main(String[] args) {
List<String> dataStrings = new ArrayList<>(Arrays.asList("Name=John;Age=15;Likes=Apples",
"Name=Mary;Age=16;Likes=Baked potatoes;Team=Basketball",
"Name=Adam;Age=17;Score=133;Likes=Jellied eels",
"Name=John;Score=283.5;City=NYC"));
System.out.println(mergeData(dataStrings));
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: