少なくともためにフィードバックのリストから、各ユーザによって与えられた最新のフィードバックをどのように見つけますか?

PK:

フィードバックは次のようになります。

    public FeedbackTable(String clusterKey, Date eventStartTime, String user, Date feedbackReceivedTime, int feedback)
    {
        this.id=clusterKey;
        this.user=user;
        this.feedback=feedback;
        this.feedbackReceivedTime=feedbackReceivedTime;
        this.eventStartTime = eventStartTime;
    }

私はこれらのフィードバックのリストを取得し、私は、各ユーザーのための唯一の最新feedbackReceivedTimeを持っているフィードバックのリストが欲しいです。

私は、フィードバックリストを反復してユニークユーザーを検索し、各ユーザーの反復処理のためのフィードバックリストの上に最新のフィードバックを得ることが、それは少なくとも順序ではありませんすることができます。

パベル・スミルノフ:

ここでは、ストリームAPIを使用してそれを行うにはどのような方法があります:

List<FeedbackTable> feedbacks = ...; // your list of feedbacks

List<FeedbackTable> latestUsersFeedbacks
          = feedbacks.stream()
                     .collect(Collectors.toMap(f -> f.user, 
                                               f -> f, 
                                              (f1, f2) -> f1.feedbackReceivedTime.after(f2.feedbackReceivedTime) ? f1 : f2))
                     .values().stream().collect(Collectors.toList());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=233602&siteId=1