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));
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: