0
私は、ステップバイステップで行う必要があることを書き留めて、これまで説明したコードを長いテキストで説明するのではなくコピーする方が簡単だと思います。Javaストリームのプロセスの順番
これは私がしなければならないものです:
- 読むファイルの行ラインでこれらの行で
- 地図キー
- は、1つのキー(次のコードでのgetURI)によってラインをマージし、(平均取得します他のキー(getRequestDuration))の
- の平均値を返します。
- 戻り値は最高です。
そして、これは私が今得たものである:
try(Stream<String> logs = Files.lines(Paths.get(args))) {
logs.map(LogLine::parseLine).limit(10).sorted((e1, e2) -> Integer.compare(e1.getRequestDuration(),
e2.getRequestDuration()))
.collect(Collectors.groupingBy(
LogLine::getUri,
Collectors.averagingDouble(LogLine::getRequestDuration)));
return logs;
私はので、私は私が誰かが私のために答えることを願っての質問のカップルを持っているJavaへの新たなんだ:
- 方法ソートする前にグループを収集した後にソートしますか?
- 正しく制限する方法は?それで、私は何回通過するのではなく、私が返すエントリーの量を制限します。
ストリームはどのように動作するのか分かりますが、実際の使用には問題があります。 私は、私が直面している問題の完全なコードを探しているわけではなく、それを行う方法を理解するために必要な情報を私に提供できる人ではありません。誰かがストリームでこのような問題に取り組む方法を書いたのであれば、私は非常に感謝しています。
を必要な値場合
LinkedHashMap
を使用する順序を維持するためにマップ
からソートおよびフィルタMap.Entry :: getValue) '、あなたは私たちにできるe 'Map.Entry.comparingByValue()' – Holger
@Holgerああ、私はこの拡張を知らなかった、ありがとう – Saravana