這裏是我的榜樣如何計算流處理的元素數量?
我有一個Person
類,看起來像
class Person {
List<String> keys;
Map<String, String> attributes;
public Person(List<String> keys, Map<String, String> attributes) {
this.keys = keys;
this.attributes = attributes;
}
public List<String> getKeys() {
return keys;
}
public Map<String, String> getAttributes() {
return attributes;
}
}
我處理一些persons
如流,並將其轉換爲JSON
作爲
@Test
public void testPersonStreamToFile() throws Exception {
Person person1 = new Person(Collections.singletonList("key1"), Collections.singletonMap("person1", "key1"));
Person person2 = new Person(Collections.singletonList("key2"), Collections.singletonMap("person2", "key2"));
File file = temporaryFolder.newFile("personStream.txt");
System.out.println(file.toString());
List<Person> persons = Arrays.asList(person1, person2);
Stream<String> personStream = persons
.stream()
.map(WorkflowTest::mapToJsonString);
Files.write(Paths.get(file.toURI()), (Iterable<String>) personStream::iterator);
System.out.println("Done");
}
要求 正如我處理流,我想保留一個Counter
,告訴我在節目結束時許多persons
被轉換爲JSON
。
我如何通過Streams
來實現?
你可以用一個'peek'方法來保留一個計數器。 – mszymborski
如果這將發生在每一個元素上(因爲沒有一個條件將一些元素分解),'stream'有一個'count()'函數,它將返回其中的元素。 –
或者你可以在JSON轉換方法中增加一些計數器。 – shmosel