计数元素出现在数组二维Java中

时间:2015-02-19 13:24:53

标签: java arrays multidimensional-array count element

各位大家好,现在我正在进行研究,我需要计算"已实现" "未实现"和"正在进行"发生。我需要计算它,因为我的研究是关于马尔可夫决策过程,我需要定义路径。所以,我需要将每个任务的结果计算到每个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
........
........
谢谢!! :)

1 个答案:

答案 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