package dx.report.schedule;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TT {
public static void main(String[] args) {
final List<String> tts = new ArrayList<String>();
tts.add("111:xxxx");
tts.add("111:xxxx");
tts.add("222:yyyyy");
tts.add("111:yyyyy");
tts.add("111:yyyyy");
tts.add("111:yyyyy");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("111:zzzzz");
tts.add("333:zzzzz");
// System.out.println(tts.stream()
// .collect(Collectors.groupingBy(x->{return x.toString().split(":")[0];}, Collectors.groupingBy(x->{return x.toString().split(":")[1];}))));
//
Map<String,List<String>> groups = tts.stream().collect(Collectors.groupingBy(x->{return x.toString().split(":")[0];}));
groups.forEach((k,v)->{
final List<String> tlist = v.stream().map(x->{return x.replace(k+":", "");}).collect(Collectors.toList());
Map<String,Long> unsortMap = tlist.stream()
.distinct()
.collect(Collectors.toMap(String::toString, x->{
return tlist.stream().filter(t->t.equals(x)).count();
}));
Map<String, Long> result = new LinkedHashMap<>();
unsortMap.entrySet().stream()
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.forEachOrdered(x -> result.put(x.getKey(), x.getValue()));
System.out.println(result);
// final List<String> tt = new ArrayList<>();
// tg.forEach((a,b)->{tt.add(b+":"+a);});
// List<String> fis = tt.stream().sorted((h1,h2)->h2.compareTo(h1)).collect(Collectors.toList());
// System.out.println(fis);
});
}
// public static void t2() {
// List<Map<String, Integer>> list = new ArrayList<>();
// Random random = new Random();
// String[] strings = { "A", "B", "C" };
// for (int i = 0; i < 5; i++) {
// Map<String, Integer> map = new HashMap<>();
// for (int j = 0; j < 3; j++) {
// map.put(strings[random.nextInt(3)], random.nextInt(10));
// }
// list.add(map);
// }
// System.out.println(list);
// Map<String, Integer> sum = list.stream() //
// .flatMap((map) -> map.entrySet().stream()) //
// .collect(Collectors.toMap(Entry::getKey, Entry::getValue, Integer::sum));
// System.out.println(sum);
// }
}