私は単語(プログラミング言語)を持つリストを持っており、アルファベットのどの文字がこれらの単語に存在するか把握し、合計文字列を合計したいこれらの単語の長さ、そして最後にこれらの単語に一致する最も長い文字列を返す1文字を返します。ここまで私が今まで持っていたものがあります。文字がある文字列の合計を返す - ストリームを使用する
これは、Javaストリームをよりよく理解しようとしている私の練習です。それは合計LISP、: "17 P" の文字 'P' の言葉のPHP、PythonやPerlで存在しているよう
私が期待する
package com.example;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class DemoApplicationTests {
@Test
public void argh() {
List<String> list = new ArrayList<>();
list.add("java");
list.add("php");
list.add("python");
list.add("perl");
list.add("c");
list.add("lisp");
list.add("c#");
Supplier<Stream<String>> streamSupplier =() -> list.stream();
IntStream.range('a', 'z').forEach(i -> {
int strlen = streamSupplier.get()
.filter(k -> {
char ch = (char) i;
return k.contains("" + ch);
}
)
.map(s -> s.length())
.mapToInt(Integer::new)
.sum();
System.out.println((char) i + " : " + strlen);
}
);
}
}
最終出力(結果は) のようなだけで何かでありますそれらの単語のみ最長の文字列を含む、
map<String,int> with the size of 1
または何かであることが好ましく17
のStringLengthのを返します。
は、ここで私は「平野」Javaでそれを書かれているだろうかに関して、いくつかの擬似コードです:
int previousSum = 0;
for (string ch in ('a' to 'z')) {
int stringlengthSum = findallMatchesInListandSumStringlength(stringlist,ch);
if (stringlengthSum > previousSum) {
previousSum = stringLengthSum;
longestCharacter = ch;
}
}
System.out.println("The longest sum is: " + previousSum + " by the character: " + longestcharacter);
期待する出力は? – assylias
この具体的な例で受け取りたい結果を記述できますか?あなたがしたいことははっきりしていません。 – Andremoniy
私によく見える、あなたの質問は何ですか?おそらくこれはCodeReviewに適していますか? –