0

ストリーム API の使用。関連データがフィルタリングされたら、収集されたデータを編集したいと思います。これまでのコードは次のとおりです。

  String wordUp = word.substring(0,1).toUpperCase() + word.substring(1);
  String wordDown = word.toLowerCase();

  ArrayList<String> text = Files.lines(path)
        .parallel() // Perform filtering in parallel
        .filter(s -> s.contains(wordUp) || s.contains(wordDown) &&  Arrays.asList(s.split(" ")).contains(word))
        .sequential()
        .collect(Collectors.toCollection(ArrayList::new));

編集以下のコードはひどいので、回避しようとしています。

    for (int i = 0; i < text.size(); i++) {
        String set = "";
        List temp = Arrays.asList(text.get(i).split(" "));
        int wordPos = temp.indexOf(word);

        List<String> com1 = (wordPos >= limit) ? temp.subList(wordPos - limit, wordPos) : new ArrayList<String>();
        List<String> com2 = (wordPos + limit < text.get(i).length() -1) ? temp.subList(wordPos + 1, wordPos + limit) : new ArrayList<String>();
        for (String s: com1)
            set += s + " ";
        for (String s: com2)
            set += s + " ";
        text.set(i, set);
    }

テキストファイル内の特定の単語を探しています。行がフィルター処理されたら、毎回行の一部のみを収集したいと思います。検索されているキーワードの両側にある単語の数。

例えば:

keyword = "the" limit = 1

次のようになります。"Early in the morning a cow jumped over a fence."

その後、次のように返されます。"in the morning"

*PS 提案された速度の改善は、賛成票を投じられます。

4

1 に答える 1