Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.task.task18.task1823;
- import javax.swing.*;
- import java.io.*;
- import java.util.*;
- /*
- Читайте с консоли имена файлов, пока не будет введено слово "exit".
- Передайте имя файла в нить ReadThread.
- Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap,
- где параметр String - это имя файла, параметр Integer - это искомый байт.
- Закрыть потоки.
- Требования:
- 1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "exit".
- 2. Для каждого файла создай нить ReadThread и запусти ее.
- 3. После запуска каждая нить ReadThread должна создать свой поток для чтения из файла.
- 4. Затем, нити должны найти максимально встречающийся байт в своем файле и добавить его в словарь resultMap.
- 5. Поток для чтения из файла в каждой нити должен быть закрыт.
- */
- public class Solution {
- public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
- public static void main(String[] args) throws IOException, InterruptedException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- List<String> list = new ArrayList<>();
- String fileName = reader.readLine();
- while (!fileName.equals("exit")){
- list.add(fileName);
- fileName = reader.readLine();
- }
- for (String file : list) {
- ReadThread run = new ReadThread(file);
- run.start();
- run.join();
- }
- }
- public static class ReadThread extends Thread {
- public ReadThread(String fileName) throws IOException {
- this.fileName = fileName;
- FileInputStream fileInputStream = new FileInputStream(fileName);
- while (fileInputStream.available() > 0) {
- int data = fileInputStream.read();
- if (map.containsKey(data)) {
- map.put(map.get(data) + 1, data);
- } else {
- map.put(1, data);
- }
- }
- }
- Map<Integer, Integer > map = new TreeMap<>();
- private String fileName = null;
- @Override
- public void run() {
- //implement constructor body
- Map.Entry< Integer, Integer > lastItem = map.lastEntry();// почему выдает ощибку ?
- resultMap.put(fileName, lastItem.getValue());
- }
- }
- // implement file reading here - реализуйте чтение из файла тут
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement