Java 如何在开始时根据相同的子字符串合并字符串数组中的字符串?

Java 如何在开始时根据相同的子字符串合并字符串数组中的字符串?,java,Java,字符串数组中的每个字符串都以HTML标记名开头,后跟“”:“”,后跟由“”、“分隔的属性名 这是字符串数组 a:accesskey,href,title a:href,title div:class div:class,id,role h3: li:id ul: 我必须打印 a:accesskey,href,title div:class,id,role h3: li:id ul: 必须根据相同的标记合并字符串,生成的字符串必须以标记名开头,然后必须跟在由逗号分隔的分组字

字符串数组中的每个字符串都以HTML标记名开头,后跟“
”:“
”,后跟由“
”、“
分隔的属性名

这是字符串数组

a:accesskey,href,title

a:href,title

div:class

div:class,id,role

h3:

li:id

ul:
我必须打印

a:accesskey,href,title

div:class,id,role

h3:

li:id

ul:
必须根据相同的标记合并字符串,生成的字符串必须以标记名开头,然后必须跟在由逗号分隔的分组字符串中的唯一属性名后面。

使用
哈希映射

伪代码:

for each tag:
    if not in map:
        add to map -> key, new set
    else:
        add all values to the existing set

请将问题中的代码格式化。现在完全不清楚了。
a:accesskey,href,title
这是数组还是数组的字符串项?我在开发代码,而你在编写伪代码:这里不需要提供实际的代码,我认为OP至少可以自己解决这个问题。但指导方针是好的
 String [] unsortedStrings = {"a:accesskey,href,title", "a:href,title", "div:class", "div:class,id,role", "h3:", "li:id", "ul:"};
        Map<String, Set<String>> map = new HashMap<>();
        Set<String> list = new HashSet<>();
        for(String unsortedString : unsortedStrings) {
            String split[] = unsortedString.split(":");
            String [] values = (split.length == 1)? new String[0]:split[1].split(","); 
            list = map.get(split[0]);
            if(list == null) {
                list = new HashSet<>();
                list.addAll(Arrays.asList(values));
            } else {
                list.addAll(Arrays.asList(values));
            }
            map.put(split[0], list);
        }

        for(Entry<String, Set<String>> entry : map.entrySet()) {
            StringBuffer buffer = new StringBuffer();
            Set <String> values = entry.getValue();
            Iterator<String> it = values.iterator();
            while(it.hasNext()){
                buffer.append(it.next());
                buffer.append(",");
            }
            if(buffer.length() > 0){
                buffer.deleteCharAt(buffer.length() - 1);
            }
            System.out.println(entry.getKey() + ":" + buffer);
        }
div:role,id,class
a:accesskey,href,title
ul:
h3:
li:id