[code="java"]
public static void main(String[] args) {
String source = "22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w,9:c,9:d,10:r";
String result = parse(source);
System.out.println(result);
}
public static String parse(String source) {
List<String> list = null;
StringBuffer buffer = new StringBuffer();
String result = null;
Map<String, List<String>> map = new HashMap<String, List<String>>();
String[] array = source.split("\\,");
for(String e : array) {
String[] entry = e.split(":");
String key = entry[0];
String value = entry[1];
if(map.get(key) == null) {
list = new ArrayList<String>();
list.add(value);
map.put(key, list);
} else {
list = map.get(key);
if(!list.contains(value)) {
list.add(value);
}
}
}
Iterator iter = map.keySet().iterator();
while(iter.hasNext()) {
String key = (String) iter.next();
list = map.get(key);
buffer.append(key + ":");
for(int i = 0; i < list.size(); i++) {
buffer.append(list.get(i));
if(i != list.size() - 1) {
buffer.append(",");
}
}
buffer.append(";");
}
result = buffer.toString();
if(buffer.charAt(buffer.length() - 1) == ';') {
result = result.substring(0, result.length() - 1);
}
return result;
}
[/code]
输出
21:r;10:r;7:r,w,c;22:w,c;9:r,w,c,d;8:w,c,d