我正在做一个小项目,该项目从facebook收集有关JSON对话的数据,并创建一个图形,其中X轴上的日期和Y上的消息号。 现在我不知道如何按日期对消息文本进行分组,该消息也存储在对象中。
我想使用
stream().collect().GroupingBy(//..
将数据放入Map<LocalDate,List<Message>>
中,但理想情况下是Map<LocalDate,Integer>
将日期映射到该日期的消息数。
或者,如果有更好的解决方案,以便以后将其用于图形解释会更容易,我欢迎您提出建议。
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Message {
private String sender_name;
private Timestamp timestamp_ms;
private String content;
}
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Conversation {
private ArrayList<Message> messages;
}
public static void readData(String path) throws IOException {
byte[] jsonData = Files.readAllBytes(Paths.get(path));
ObjectMapper objectMapper = new ObjectMapper();
Conversation conversation = objectMapper.readValue(jsonData, Conversation.class);
groupByDate(conversation);
}
public static void groupByDate(Conversation conv){
HashMap<LocalDate,Message> countMap = conv.getMessages().stream().collect(groupingBy(conv.getMessages().::/*?*/));
}
答案 0 :(得分:0)
在GUI中没有更多关于期望结果的详细信息,我无法提出更好的选择,但是假设.your-class-name{ float: right !important }
也可以,则可以使用Map<LocalDate, Long>
方法的重载版本:
groupingBy