Я просмотрел какой-то код и наткнулся на этот метод, который принимает значение заголовка HTML (то есть контент-disposition = inline; filename = foo.bar ) и анализирует его в карту, разделенную полуколонными в клавиш = пара пары. Сначала это выглядело как хороший кандидат для оптимизации с использованием потока, но после того, как я его реализовал, тот факт, что я не могу повторно использовать вычислительную string.indexof ('=') значение означает, что строка должна быть сканирована 3 раз, что на самом деле менее оптимально, чем оригинал. только что пропустил какую -то технику, которая могла бы позволить потоку быть таким же исполнительным/эффективным, чем начальный код./**
* Convert a Header Value String into a Map
*
* @param value The Header Value
* @return The data Map
*/
private static Map headerMap (String value) {
int eq;
Map map = new HashMap();
for(String entry : value.split(";")) {
if((eq = entry.indexOf('=')) != -1) {
map.put(entry.substring(0,eq),entry.substring(eq + 1));
}
}
return map;
return Stream.of(value.split(";")).filter(entry -> entry.indexOf('=') != -1).collect(Collectors.));
} //headerMap
< /code>
Моя попытка транслировать его: < /p>
/**
* Convert a Header Value String into a Map
*
* @param value The Header Value
* @return The data Map
*/
private static Map headerMap (String value) {
return Stream.of(value.split(";")).filter(entry -> entry.indexOf('=') != -1).collect(Collectors.toMap(entry -> entry.substring(0,entry.indexOf('=')),entry -> entry.substring(entry.substring(entry.indexOf('=') + 1))));
} //headerMap
Подробнее здесь: https://stackoverflow.com/questions/323 ... va-streams