У меня есть список со словами (языки программирования), и я хочу выяснить, какая буква в алфавите присутствует в этих словах, а затем суммировать общую строку длина этих слов и, в конце концов, возвращает одну букву, которая возвращает самую длинную строку, соответствующую этим словам. Вот то, что у меня есть до сих пор, и я почти не буду дальше.возвращает сумму строк, где присутствует буква - с использованием потоков
Это упражнение во мне, пытаясь лучше понять потоки Java.
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);
}
);
}
}
Конечный результат (результат), я бы ожидать, это просто что-то вроде «р: 17»
Как символ «р» присутствует в слова PHP, Python, Perl, сюсюкать это подводит те слова и возвращает StringLength из 17.
Предпочтительно в
map<String,int> with the size of 1
или что-то, содержащие только самую длинную строку.
Вот некоторые псевдокоды о том, как я написал бы ее в «простом» ява:
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? –