各位大家好,现在我正在进行研究,我需要计算"已实现" "未实现"和"正在进行"发生。我需要计算它,因为我的研究是关于马尔可夫决策过程,我需要定义路径。所以,我需要将每个任务的结果计算到每个P1或P2关于已实现,未实现和正在进行的
我的文件是这样的:
a->P1-> Interrupted
a->P1-> Achieved
a->P1-> Achieved
a->P1-> Achieved
a->P1-> Achieved
a->P1-> Achieved
a->P1-> Achieved
a->P1-> Achieved
a->P1-> On-going
a->P1-> Interrupted
a->P2-> Interrupted
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> Achieved
a->P2-> On-going
b->P1-> Achieved
b->P1-> Achieved
b->P1-> Achieved
b->P1-> Achieved
b->P1-> Achieved
b->P1-> Achieved
b->P1-> Achieved
b->P1-> On-going
b->P1-> Interrupted
b->P2-> Interrupted
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> Achieved
b->P2-> On-going
我想要结果:
a->P1-> achieve 7 times
a->P1-> Unachieved 2 times
a->P1-> On-going 1 time
a->P2-> achieve 8 times
........
........
谢谢!! :)
答案 0 :(得分:-1)
使用Java 8 Streams功能,您可以按照以下方式执行此操作:
Map<String, List<String>> byType =
Files.lines(Paths.get("c:\\Temp\\markov.txt"), Charset.defaultCharset()).
collect(
Collectors.groupingBy(String::toString));
byType.entrySet().stream().forEach(t -> System.out.println(t.getKey() + ":" + t.getValue().size()));
请参阅以下输出:
a->P2-> Interrupted:1
a->P1-> Achieved:7
b->P1-> Interrupted:1
b->P2-> On-going:1
a->P1-> On-going:1
b->P1-> On-going:1
a->P2-> On-going:1
b->P2-> Interrupted:1
a->P1-> Interrupted:1
b->P2-> Achieved:8
b->P1-> Achieved:7
a->P2-> Achieved:8