私は、Java-8ストリームを使用するには、この(簡体字)コードを変換しようとしている:は、ストリームを使用して条件付きでマップを移入 - Javaの8
files = reader.lines().parallel().collect((content != null)?
(Collectors.toConcurrentMap(line->"notnull"+line, line->line+"notnull")) :
(Collectors.toConcurrentMap(line->line+"null", line->line+"null")));
を:ここで
Map<String, String> files = new ConcurrentHashMap<String, String>();
while(((line = reader.readLine()) != null) {
if(content != null)
files.put("not null"+line, "not null"+line);
else
files.put("its null"+line, "its null"+line);
}
reader.close();
は、私が試したものです
しかし、上記では、intelliJ上のすべてのメッセージについて「循環推論」メッセージを示しています。周期的推論とは何ですか?このロジックにエラーはありますか?
私はSOに関するいくつかの同様の問題に注意しました。しかし、彼らは実装の代わりにインタフェース(Map)を使うことを提案している。ただしfiles
はMap
と宣言されています。
更新:コンテキストをさらに追加すると、content
はディレクトリ名を保持する文字列です。 files
は、複数のファイルパスを保持するマップです。どのファイルパスがfiles
マップに入る必要があるかは、content
ディレクトリ名が入力されているかどうかに依存します。
コードサンプルは少し不明です。 (1) "content"変数とは何ですか? (2)1つのファイルの行を読み込んでいますが、それらを "files"というマップに入れていますか? –
1. 'content'は、ディレクトリの名前を保持するStringです。 2。はい、私はテキストファイル(基本的にいくつかの部分トークンを含んでいます)から行を読み込み、一緒にファイルマップに入るファイルパスに追加しています。 – AshwiniR