betacode

Руководство Java StringReader

  1. StringReader
  2. Examples

1. StringReader

Класс StringReader используется для чтения String в стиле символьного входного потока (character input stream).
По сути, StringReader - это подкласс Reader. Он имеет только методы, унаследованные от его родительского класса. Таким образом, вы можете прочитать статью о Reader, чтобы узнать больше об этих методах.
StringReader constructor
public StringReader(String s)

2. Examples

Например: Прочитайте текст, перечисляя слова, которые появляются в тексте, и количество вхождений каждого слова.
  • Руководство Java StreamTokenizer
StringReaderEx2.java
package org.o7planning.stringreader.ex;
 
import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

public class StringReaderEx2 {

    public static void main(String[] args) throws IOException {
        String s = "Apple Apricots Apricots Blackberries Apple";
        
        Reader reader = new StringReader(s);
        StreamTokenizer tokenizer = new StreamTokenizer(reader); // StreamTokenizer(Reader)
        
        // <String word, int count>
        Map<String, Integer> wordsMap = new HashMap<>();
        
        // Read and count the frequency for every word.
        while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
            if (tokenizer.ttype == StreamTokenizer.TT_WORD) {
                int count;
                 
                if(wordsMap.containsKey(tokenizer.sval)) {
                    count = wordsMap.get(tokenizer.sval).intValue();
                    count++;
                }
                else {
                    count = 1;
                }
                wordsMap.put(tokenizer.sval, count);
            }
        }
        
        wordsMap.forEach((word, count) -> {
            System.out.println(word + " : " + count);
        });
    }
}
Output:
Apple : 2
Apricots : 2
Blackberries : 1
Например: Прочитайте текст с несколькими строками, распечатайте строки, которые заканчиваются на "B", и не начинаются на "#" (Строка комментария).
StringReaderEx3.java
package org.o7planning.stringreader.ex;

import java.io.BufferedReader;
import java.io.Reader;
import java.io.StringReader;

public class StringReaderEx3 {

    public static void main(String[] args) {
        String students = //
                "# Students:\n" //
                        + "John P\n" //
                        + "Sarah M\n" //
                        + "# Sarah B\n" //
                        + "Charles B\n" //
                        + "Mary T\n" //
                        + "Sophia B\n";

        Reader reader = new StringReader(students);

        BufferedReader br = new BufferedReader(reader);

        br.lines() // return java.util.stream.Stream
                .filter(s -> !s.trim().startsWith("#")) // Line not start with #
                .filter(s -> s.endsWith("B")) // Line ends with B
                .forEach(System.out::println);

    }
}
Output:
Charles B
Sophia B

Руководства Java IO

Show More