не реализуется getName() в нити

260
24 марта 2017, 23:03
/* 
    Задача
    Читайте с консоли имена файлов, пока не будет введено слово «exit«.
Передайте имя файла в нить ReadThread.
Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap,
где параметр String — это имя файла, параметр Integer — это искомый байт.
Закрыть потоки.
    */   
 public class Solution {
        public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
        public static void main(String[] args) throws InterruptedException, IOException {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            while(true){
                String name = reader.readLine();
                if (name.equals("exit"))
                    break;
                ReadThread thread = new ReadThread(name);
                thread.start();
            }
        }
        public static class ReadThread extends Thread {
            public ReadThread(String fileName){
                super(fileName);
                }
                //implement constructor body
            }
            public void run() {
            try {
                FileInputStream in = new FileInputStream(getName()); // getName() везде красный
                ArrayList<Integer> list = new ArrayList<Integer>();
                HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
                while (in.available()>0){
                    list.add(in.read());
                }
                for (int i = 0;i<list.size();i++) {
                    int d = Collections.frequency(list,list.get(i));
                    map.put(d,list.get(i));
                }
                TreeMap<Integer, Integer> maps = new TreeMap<Integer,Integer>(map);
                List keyList = new ArrayList(maps.keySet()); // тут я просто не знаю как найти последний элемент в мапе сделал через лист
                resultMap.put(getName(), keyList.get(keyList.size()-1));
            }
            catch (IOException e){
            }
            }
        }

Сделал такую реализацию пока не знаю правильно или нет. Загвоздка заключается в том что при написании getName() в методе run он загорается красным (собственно вообще при начале написания get из возможных вариантов idea выдает только getClass() типа что то блокирует вообще любую реализацию get если я создаю новый класс делаю там нить то с getName() все нормально) типа такого метода нет хотя он должен возвращать имя данной нити подскажите пожалуйста в чем ошибка ну и по коду если есть какие то косяки заранее благодарен.

READ ALSO
Не могу составить запрос MySQL для фильтра по товарам

Не могу составить запрос MySQL для фильтра по товарам

Есть таблица product (id, name)Есть таблица product_option (id, product_id, option_id) У продукта могут быть несколько опций, а может и не быть вообще

273
Ошибка &ldquo;Abnormal build process termination&rdquo; в IntelliJ IDEA

Ошибка “Abnormal build process termination” в IntelliJ IDEA

Пару дней назад решил начать осваивать Java (До этого работал на Си)В консоли все работает отлично, решил перейти на IDEA

392
Удаление элементов на сайте при помощи расширения chrome

Удаление элементов на сайте при помощи расширения chrome

Необходимо при помощи расширения chrome удалить некоторые элементы с сайта

296
При наведении курсора на div1 открывать div2

При наведении курсора на div1 открывать div2

Как сделать так, чтобы при наведении курсора на div1, вместо него открывался div2?

201