powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 8 - уже не совсем Java?
25 сообщений из 448, страница 2 из 18
Java 8 - уже не совсем Java?
    #39149621
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Collectors.toMap со слиянием имеет смысл для parallel stream.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149627
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Что-то типа Integer.valueOf(v1.intValue() + v2.intValue()), если я правильно понимаю
Скорее всего, mayton имел ввиду вопрос "Чо эта за merge такой и нафига он нужен для создания Map".
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149632
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczCollectors.toMap со слиянием имеет смысл для parallel stream.
Гоню. merge нужен для не уникальных значений в stream вообще. К Fork/Join это прямого отношения не имеет. Хотя метод и может быть использован как join.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149636
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОк. Зачем такая заумная регулярка вместо \p{Punct}, \w, \s?

А, это во-первых, подбирал под конкретный текст, во-вторых,
сразу сделал с метасимволами, почему-то оно не сработало, но
я не разбирался в деталях, почему.

Да, может можно попроще, но там же смесь из как минимум двух языков -- русского и французского,
так что есть специфика.



авторЗачем собирать в мапу, чтобы потом снова конвертить её в стрим?

Это странное замечание, собирать -- чтобы посчитать кол-во повторений слов.
Затем заново конвертить в стрим -- чтобы отсортировать по частоте слова и распечатать в таком
виде.

авторИнлайнить огромные куски кода в аргумент это не красиво и не удобно для отладки.

Да ладно, фигня всё это.

авторЗачем плодить новый Stream для каждой строки, если можно было бы сразу парсить текст на слова и стримить (Scanner, Splitterator, StreamSupport)


Это вообще не понял, где там для каждой строки стрим ?
В смысле, не порождать стрим из стрима, а делать вложенные обработки в нескольких стримах ?
Ну, а какая разница-то ?
Мне было интересно именно разобрать операции, вычисляющие всё как бы "в одном потоке".
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149693
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

У тебя N+2 стрима. Один стрим строк файла, один стрим для печати Map и N стримов слов для каждого слова в каждой строке.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149722
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczMasterZiv,

У тебя N+2 стрима. Один стрим строк файла, один стрим для печати Map и N стримов слов для каждого слова в каждой строке.

Я это вполне понимаю.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149728
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЯ это вполне понимаю.
Ну и зачем их так много, если всё одним можно прогнать?
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149734
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczMasterZivЯ это вполне понимаю.
Ну и зачем их так много, если всё одним можно прогнать?

Ну, покажи, как.

А вообще, там стримы от split-а возникают для каждой строки исходного файла и после влития в основной
стрим удаляются.

javadoc on flatMap * Returns a stream consisting of the results of replacing each element of
* this stream with the contents of a mapped stream produced by applying
* the provided mapping function to each element. Each mapped stream is
* {@link java.util.stream.BaseStream#close() closed} after its contents
* have been placed into this stream. (If a mapped stream is {@code null}
* an empty stream is used, instead.)
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149740
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу, покажи, как.

В регулярное выражение добавляешь перенос строки и скармливаешь его сканеру.
Из сканера делаешь стрим
http://stackoverflow.com/a/29611792
Получаешь стрим слов и считаешь себе.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149754
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Ок, попробую...
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149804
Арктур Менгск
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyуперлась производительность транзисторов в 3 Мгц без водяного охлаждения и 5 Мгц с ним
а чо так мало-то ?
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149837
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Арктур Менгск...
а чо так мало-то ?
дык оно не мало. Три порядка - да - сквозь пальцы просыпались, вот и приехало на печать, то, что осталось.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149901
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевmayton // Mayton: I do not know what is it, but autoboxing is works!
(Integer v1, Integer v2) -> (v1 + v2)

Что-то типа Integer.valueOf(v1.intValue() + v2.intValue()), если я правильно понимаю
Я не про автобоксинг. Я про аккумулирование суммы.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmaytonКоллективный разум зудит во мне...

Код: java
1.
static final List<String> nonWords = Arrays.asList("-", "–");



Ну, и чё он зудит-то ?
Один конструктор вроде-бы был лишний. И интерфейс List - более usable в будущем.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149920
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тему поднимал http://www.sql.ru/forum/1176249/hadoop-obshhie-voprosy (тему про тюториалы с Хадуп)

Вобщем... я забил на нее большой болт т.к. был увлечён своими рабочими
вопросами но щас пока пару недель я на bench -
появилась возможность поразбираться с этим слоном.

Как только у меня взлетит тестовая среда - я задачу Ильи попробую там
закодить чтобы сравнить подходы.

Правда возможно мне придётся Войну и Мир разбить на части если этот
бородатый пейсатель не сделал это раньше за меня

P.S. HDFS block = 128 Mb (OMG!)
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczMasterZivУменьшил код, выбросил лишнее, но добавил новые проверки и вывод, ранжированный по частоте употребления слова.
Ваше форматирование никуда не годится. Кортит меня и про код вообще написать. Но не буду.
От-жеж бухтелка :). Тебя в Нетбинсе зобанили? Ну можно побыть толерантным к code-style ну йомайо...
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149944
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОт-жеж бухтелка :). Тебя в Нетбинсе зобанили? Ну можно побыть толерантным к code-style ну йомайо...
Это не style, это лень. Выше ведь был более-менее нормальный код. И тут на те - сделал код короче - убрал переносы строки.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149997
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonMasterZivпропущено...


Ну, и чё он зудит-то ?
Один конструктор вроде-бы был лишний. И интерфейс List - более usable в будущем.

Не понял нифига...
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39149998
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ тему поднимал http://www.sql.ru/forum/1176249/hadoop-obshhie-voprosy (тему про тюториалы с Хадуп)

Вобщем... я забил на нее большой болт т.к. был увлечён своими рабочими
вопросами но щас пока пару недель я на bench -
появилась возможность поразбираться с этим слоном.

Как только у меня взлетит тестовая среда - я задачу Ильи попробую там
закодить чтобы сравнить подходы.

Правда возможно мне придётся Войну и Мир разбить на части если этот
бородатый пейсатель не сделал это раньше за меня

P.S. HDFS block = 128 Mb (OMG!)

Война и Мир очень маленькая для таких экспериментов, надо что-то повесомее.
Типа википерии.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВойна и Мир очень маленькая для таких экспериментов, надо что-то повесомее.
Типа википерии.
У меня где-то был Либрусек. Несколько гигов. Правда - формат fb2. Перед употреблением
нужно чистить от шелухи в виде тегов. Хотя возможно в рамках подсчёта слов это почти
не мешает.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150337
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmaytonпропущено...

Один конструктор вроде-бы был лишний. И интерфейс List - более usable в будущем.

Не понял нифига...
А забей. Я весь 2012 год провёл в code-review и рефакторингах. И привык машинально
фиксить тонны Java-строк.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150886
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
типа так ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
import static java.lang.System.out;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public class Main
{
    static final String WORD_DELIMITERS_REGEX = "[\\s \\t,.?!:;\"()\\[\\]«»…]+";
    static final ArrayList<String> nonWords = new ArrayList<>( Arrays.asList("-", "–") );

    static void printDictionary(String name, Map<?, ?> c)
    {
        out.printf( c.isEmpty() ? "Dictionary '%s' is empty.\n" : "Dictionary '%s':\n", name);
        c.forEach( (k,v) -> out.printf("\t%s[%s] == %d\n", name, k, v ) );
    }

    static void printDictionarySortedByValue(String name, Map<?, Integer> c)
    {
        out.printf( c.isEmpty() ? "Dictionary '%s' is empty.\n" : "Dictionary '%s':\n", name);
        if( !c.isEmpty() )
            out.printf( "distinct words %d, total words %d\n", c.size(), c.values().stream().reduce( (c1, c2) -> c1 + c2 ).orElse(0) );
        c.entrySet().stream().sorted( (e1, e2) -> e2.getValue()-e1.getValue() )
                .forEach( e -> out.printf("\t%s[%s] = %d\n", name, e.getKey(), e.getValue() ) );
    }

    public static void main(String[] args)
    {
        try(InputStream is = new FileInputStream(args[0]);
            Scanner sc = new Scanner(is).useDelimiter(WORD_DELIMITERS_REGEX);
            Stream<String> word_stream = StreamSupport.stream( Spliterators.spliterator(sc, 1, 0), false)
            )
        {
            Map<String, Integer> words = word_stream.filter( s -> !s.isEmpty() && !nonWords.contains(s) )
                                                    .map( String::toLowerCase )
                                                    .collect( Collectors.toMap( k -> k, k -> 1, (v1, v2) -> v1 + v2 ) );
            printDictionarySortedByValue( "words", words );
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150888
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, ещё бы ненужный
Код: java
1.
public class Main


выпилить, вообще классно бы стало.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭх, ещё бы ненужный
Код: java
1.
public class Main


выпилить, вообще классно бы стало.
Меня поначалу тоже удивляло что точка входа main() всегда обёрнута в class.
Я думаю что это вежливый "реверанс" в сторону работы classloader-а.

Но можно попробовать скрипы Groovy или Scala. Там требования к формализму
будут помягче.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39150941
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код выглядит не очень, мягко говоря.

см. аналогичный пример из учебника на D
https://dlang.org/wc.html

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
import std.stdio;
import std.algorithm;

int main(string[] args)
{
    ulong wordCount;
    ulong lineCount;
    ulong charCount;

    int[string] dictionary;
    writeln("   lines   words   bytes file");

    foreach(arg; args[1 .. args.length])
    {
        ulong lWordCount;
        ulong lCharCount;
        ulong lLineCount;

        auto file = File(arg);
        foreach(line; file.byLine(KeepTerminator.yes))
        {
            lCharCount += line.length;
            foreach(char[] word; splitter(line))
            {
                lWordCount += 1;
                if(auto count = word in dictionary)
                    *count += 1;
                else
                    dictionary[word.idup] = 1;
            }

            lLineCount += 1;
        }

        writefln("%8s%8s%8s %s\n", lLineCount, lWordCount, lCharCount, arg);

        wordCount += lWordCount;
        lineCount += lLineCount;
        charCount += lCharCount;
    }

    if (args.length > 2)
    {
        writefln("--------------------------------------\n%8s%8s%8s total",
                        lineCount, wordCount, charCount);
    }

    writeln("--------------------------------------");

    foreach (word; sort(dictionary.keys))
    {
            writefln("%3s %s", dictionary[word], word);
    }
    return 0;
}


...
Рейтинг: 0 / 0
25 сообщений из 448, страница 2 из 18
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 8 - уже не совсем Java?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]