Java-8 akışları kullanmak için bu (basitleştirilmiş) kodu çevirmek çalışıyorum: Buradaakışları kullanarak koşullu bir harita doldurma - Java 8
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();
denedim budur:
files = reader.lines().parallel().collect((content != null)?
(Collectors.toConcurrentMap(line->"notnull"+line, line->line+"notnull")) :
(Collectors.toConcurrentMap(line->line+"null", line->line+"null")));
Ancak, yukarıdakiler, intelliJ'deki tüm line->line+"..."
için "döngüsel çıkarım" mesajını verir. Döngüsel çıkarım nedir? Bu mantıkta bir hata var mı?
SO ile ilgili bazı benzer sorunlara dikkat çektim. Ancak, uygulamaları yerine arayüz (Harita) kullanmayı önerirler. Ancak files
burada Map
olarak bildirilmiştir.
Güncelleştirme: Daha fazla bağlam ekleme, content
dizinin adını tutan bir dizedir. files
, birden çok dosya yolunu tutan bir haritadır. files
haritasına gitmek için hangi dosya yollarına gitmek gerekiyor content
dizin adına kayıtlı veya değil.
Kod örneği biraz belirsiz. (1) "İçerik" değişkeni nedir? (2) Tek bir dosyanın satırlarını mı okuyorsunuz, yoksa onları "dosya" olarak adlandırılan bir haritaya mı koyuyorsunuz? –
1. 'content', bir dizinin adını tutan bir String'dir. 2.Evet, bir metin dosyasından satırları okuyorum (temelde bazı kısmi belirteçler içerir) ve bunları birlikte dosya haritasına girecek dosya yollarına ekliyorum. – AshwiniR