Я использовал Regex в списке строк, которые вы упомянули в верхней части, дайте мне знать, если это работает для вас
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("[Cid:0001,Jid:439,java,unit testing]");
list.add("[Cid:0001,Jid:439,java,jsp,xml,javascript,servlet,html]");
list.add("[Cid:0001,Jid:245,ui development,jquery,javascript,html,ajax]");
list.add("[Cid:0002,Jid:312,team,goals,territory]");
Map<String, String> map = new HashMap<String, String>();
final Pattern patternId = Pattern.compile("Cid:\\d*,Jid:\\d*,", Pattern.MULTILINE);//to get Id combo
for(int i=0; i<list.size(); i++) {
Matcher matcher = patternId.matcher(list.get(i));
String cIdJid = null;
if(matcher.find()) {
cIdJid = matcher.group(0);
}
if(map.containsKey(cIdJid)) {
map.put(cIdJid, map.get(cIdJid)+","+list.get(i));
}else {
map.put(cIdJid, list.get(i));
}
}
Collection<String> collection = map.values();
for (String value : collection) {
if(value.contains("],[")) {
System.out.println("["+value+"]");
}else {
System.out.println(value);
}
}
}
выход
[[Cid:0001,Jid:439,java,unit testing],[Cid:0001,Jid:439,java,jsp,xml,javascript,servlet,html]]
[Cid:0002,Jid:312,team,goals,territory]
[Cid:0001,Jid:245,ui development,jquery,javascript,html,ajax]