com.javarush.task.task19.task1906

/*
Четные байты
Считать с консоли 2 имени файла.
Вывести во второй файл все байты с четным индексом.

Пример:
второй байт, четвертый байт, шестой байт и т.д.

Закрыть потоки ввода-вывода.
*/

package com.javarush.task.task19.task1906;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws Exception {

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        FileReader fileReader = new FileReader(bufferedReader.readLine());
        FileWriter fileWriter = new FileWriter(bufferedReader.readLine());
        bufferedReader.close();

        int count = 1;

        while (fileReader.ready()){
            if ((count%2)==0){
                fileWriter.write(fileReader.read());
            }
            count++;
        }
        fileReader.close();
        fileWriter.close();
    }
}


Не проходит проверку. Подозреваю, что считывать нужно всё-таки байты, а не символы? Для этого нужно написать адаптер от FileReader к InputStream или как-то по-другому? Какой тогда интерфейс должен реализовывать класс-адаптер, если InputStream это не интерфейс? Или можно унаследоваться от InputStream? Помогите плс, кто шарит. Если что, в задаче обязательно использовать именно FileReader.

task.task20.task2002 Не хочет принимать гад

Буду очень благодарен, если кто-то все-таки сможет сказать, что же тут не так

public class Solution {
    public static void main(String[] args) {

    }

    public static class JavaRush {
        public List<User> users = new ArrayList<>();
        SimpleDateFormat form = new SimpleDateFormat("dd MM yyyy");

        public void save(OutputStream outputStream) throws Exception {
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream));
            int size = users.size();
            writer.println(size);
            if (size>0)
            {
                for(User us : users)
                {
//                    пишем имя
                    writer.println(us.getFirstName());

//                    пишем фамилию
                    writer.println(us.getLastName());

//                    пишем дату
                    writer.println(form.format(us.getBirthDate()));

//                    пишем пол
                    writer.println(us.isMale());

//                    пишем страну
                    writer.println(us.getCountry());


                }
            }
        }

        public void load(InputStream inputStream) throws Exception {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                while (reader.ready())
                {  int size = Integer.parseInt(reader.readLine());
                    for(int i = 0;i<size;i++) {
                        User us = new User();

                        String name = reader.readLine();
                        if(name.equals("null"))
                        us.setFirstName(null);
                        else  us.setFirstName(name);

                        String last = reader.readLine();
                        if (last.equals("null"))
                        us.setLastName(null);
                        else us.setLastName(last);

                        String bd = reader.readLine();
                        if (bd.equals("null"))
                            us.setBirthDate(null);
                        else
                        us.setBirthDate(form.parse(bd));

                        String male = reader.readLine();
                        if (male.equals("true")) us.setMale(true);
                        else  us.setMale(false);

                        String cont = reader.readLine();
                        if (cont.equals("null"))
                        us.setCountry(null);
                        else us.setCountry(User.Country.valueOf(cont));
                        users.add(us);
                    }
                }
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            JavaRush javaRush = (JavaRush) o;

            return users != null ? users.equals(javaRush.users) : javaRush.users == null;

        }

        @Override
        public int hashCode() {
            return users != null ? users.hashCode() : 0;
        }
    }
}
  • ,

package com.javarush.task.task08.task0812;

Завдання:
Cамая длинная последовательность
1. Создай список чисел.
2. Добавь в список 10 чисел с клавиатуры.
3. Вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.


Пробував 2 колекціями ArrayList, також не приймало. Вже 1 колекцією ArrayList зробив, все одно не приймає.

package com.javarush.task.task08.task0812;

import java.io.*;
import java.util.*;

/* 
Cамая длинная последовательность
*/
public class Solution {
    static int count = 0;

    public static void main(String[] args) throws IOException {
        final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> list = new ArrayList<>();
        int number = 1;
        for (int i = 0; i < 10; i++) {
            list.add(Integer.parseInt(reader.readLine()));
        }

        for (int i = 1; i < list.size(); i++) {
            if (list.get(i - 1) == list.get(i)) {
                count++;
                if (i == 9) {
                    count++;
                }
            } else {
                count++;
                if (count > number) {
                    number = count;
                }
                count = 0;
            }

            if (count > number) {
                number = count;
            }
        }
        System.out.println(number);
    }
}

package com.javarush.test.level20.lesson02.task01;

Собственно проблема. При втором вызове метода load reader уже читает null'ы, в чем проблема?

/* Читаем и пишем в файл: Human
Реализуйте логику записи в файл и чтения из файла для класса Human
Поле name в классе Human не может быть пустым
В файле your_file_name.tmp может быть несколько объектов Human
Метод main реализован только для вас и не участвует в тестировании
*/

public class Solution {
    public static void main(String[] args) {
        //you can find your_file_name.tmp in your TMP directory or fix outputStream/inputStream according to your real file location
        //вы можете найти your_file_name.tmp в папке TMP или исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу
        try {

            File your_file_name = File.createTempFile("your_file_name", null);
            your_file_name = new File("1.txt");
            OutputStream outputStream = new FileOutputStream(your_file_name);
            InputStream inputStream = new FileInputStream(your_file_name);

            Human ivanov = new Human("Ivanov", new Asset("home"), new Asset("car"));
            Human petrov = new Human("petrov", new Asset("guitar"));
            Human sidorov = new Human("sidorov", new Asset("wife"));
            ivanov.save(outputStream);
            petrov.save(outputStream);
            sidorov.save(outputStream);
            outputStream.flush();

            Human somePerson = new Human();
            Human somePerson1 = new Human();
            Human somePerson2 = new Human();
            somePerson.load(inputStream);
            somePerson1.load(inputStream);
            somePerson2.load(inputStream);
            //check here that ivanov equals to somePerson - проверьте тут, что ivanov и somePerson равны
            inputStream.close();

        } catch (IOException e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with my file");
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with save/load method");
        }
    }


    public static class Human {
        public String name;
        public List<Asset> assets = new ArrayList<>();

        public Human() {
        }

        public Human(String name, Asset... assets) {
            this.name = name;
            if (assets != null) {
                this.assets.addAll(Arrays.asList(assets));
            }
        }

        public void save(OutputStream outputStream) throws Exception {
            PrintWriter writer = new PrintWriter(outputStream);
            writer.println(name);
            if (!assets.isEmpty()) {
                writer.println(true);
                writer.println(assets.size());
                for (Asset asset : assets) {
                    writer.println(asset.getName());
                    writer.println(asset.getPrice());
                }
            } else {
                writer.println(false);
            }
            writer.flush();
        }

        public void load(InputStream inputStream) throws Exception {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            name = reader.readLine();
            if (reader.readLine().equals("true")) {
                int count = Integer.parseInt(reader.readLine());
                for(int i = 0; i < count; i ++) {
                    Asset asset = new Asset(reader.readLine());
                    asset.setPrice(Double.parseDouble(reader.readLine()));
                    assets.add(asset);
                }
            }
        }
    }
}
  • ,

Тестовое задание: "Написать Интерпретатор на язык BrainFuck"

Привет всем!

Сегодня хочу поделится другой задачей, которая была у меня на собеседовании. Задача, которая проверит как Вы можете мыслить, как пишете код. Задача в общем полезная для развития.
Написать интерпретатор на язык программирования BrainFuck.
Для примера взять исходный код на BrainFuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
печатающий «Hello World!»


У вас есть на это 1.5 — 2 часа. Вперед!

Вот и всё… Вот и всё условие задачи.

Я вас всех прекрастно понимаю. Для того, чтобы понять вообще что делать, нужно разобраться с двумя терминами:
Что такое интерпретатор?

Что такое BrainFuck?

Вам придется с этим разобраться, т.к. задача действительно интересная.
Для тех, кто будет разбираться скажу — сложность в том, чтобы построить логику циклов.


Всем кому задача стала полезной — ставим "+". Решайте задачи, пишите код и вы станете Java разработчиками! Удачи!

См. также мои другие статьи:
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

package com.javarush.test.level19.lesson10.bonus01;

Мне бы тестовых данных:)
Почему-то не проходит(
/* Отслеживаем изменения
Считать в консоли 2 имени файла — file1, file2.
Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
Нужно создать объединенную версию строк, записать их в список lines
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
Пример:
оригинальный редактированный общий
file1: file2: результат:(lines)

строка1 строка1 SAME строка1
строка2 REMOVED строка2
строка3 строка3 SAME строка3
строка4 REMOVED строка4
строка5 строка5 SAME строка5
строка0 ADDED строка0
строка1 строка1 SAME строка1
строка2 REMOVED строка2
строка3 строка3 SAME строка3
строка5 ADDED строка5
строка4 строка4 SAME строка4
строка5 REMOVED строка5
*/


    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName1 = reader.readLine();
        String fileName2 = reader.readLine();

        BufferedReader iReader = new BufferedReader(new FileReader(fileName1));
        BufferedReader iReader2 = new BufferedReader(new FileReader(fileName2));

        ArrayList<String> file1 = new ArrayList<>();
        ArrayList<String> file2 = new ArrayList<>();

        while (iReader.ready()) {
            file1.add(iReader.readLine());
        }
        while (iReader2.ready()) {
            file2.add(iReader2.readLine());
        }

        int i = 0;
        int removed = 0;
        while (file1.size() > i) {
            String line1 = file1.get(i);
            String line2;
            if (file2.size() > i - removed) {
                line2 = file2.get(i - removed);
            }else{
                lines.add(new LineItem(Type.REMOVED, line1));
                break;
            }

            if (line1.equals(line2)) {
                lines.add(new LineItem(Type.SAME, line1));
            } else {
                String line22 = file2.get(i + 1 - removed);
                if (line1.equals(line22)) {
                    lines.add(new LineItem(Type.ADDED, line2));
                    lines.add(new LineItem(Type.SAME, line1));
                    removed--;
                } else {
                    lines.add(new LineItem(Type.REMOVED, line1));
                    removed++;
                }
            }
            i++;
        }


        reader.close();
        iReader.close();
        iReader2.close();
    }
  • ,

level16.lesson13.bonus02

Народ, помогите! Я че-т уже все перепробовал. Не понимаю, что не так

package com.javarush.test.level16.lesson13.bonus02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/* Клубок
1. Создай 5 различных своих нитей c отличным от Thread типом:
1.1. нить 1 должна бесконечно выполняться;
1.2. нить 2 должна выводить "InterruptedException" при возникновении исключения InterruptedException;
1.3. нить 3 должна каждые полсекунды выводить "Ура";
1.4. нить 4 должна реализовать интерфейс Message, при вызове метода showWarning нить должна останавливаться;
1.5. нить 5 должна читать с консоли цифры пока не введено слово "N", а потом вывести в консоль сумму введенных цифр.
2. В статическом блоке добавь свои нити в List<Thread> threads в перечисленном порядке.
3. Нити не должны стартовать автоматически.
Подсказка: Нить 4 можно проверить методом isAlive()
*/

public class Solution {
    public static List<Thread> threads = new ArrayList<Thread>(5);

    static {
        threads.add(new Thread1());
        threads.add(new Thread2());
        threads.add(new Thread3());
        threads.add(new Thread4());
        threads.add(new Thread5());

    }

    public static class Thread1 extends Thread {

        @Override
        public void run() {
            while(true) {}
        }
    }


    public static class Thread2 extends Thread  {

        @Override
        public void run() {
            try {
                Thread.sleep(Integer.MAX_VALUE);
            } catch (InterruptedException e) {
                System.out.println("InterruptedException");
            }
        }
    }


    public static class Thread3 extends Thread {

        @Override
        public void run() {
            try {
                while(!Thread.interrupted()) {
                    System.out.println("Ура");
                    Thread.sleep(500);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }


    public static class Thread4 extends Thread  implements Message {

        @Override
        public void run() {

            while(!Thread.interrupted()) {}
        }

        @Override
        public void showWarning() {
            if (this.isAlive()) {
                this.interrupt();
            }
        }
    }


    public static class Thread5 extends Thread {
        private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        private int counter;

        @Override
        public void run() {
            String line;
            try {
                while(true) {
                    line = reader.readLine();
                    if (line.equals("N")) {
                        break;
                    }
                    counter += Integer.parseInt(line);
                    reader.close();
                }
                System.out.println(counter);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


1.1. нить 1 должна бесконечно выполняться;
Выполняется

1.2. нить 2 должна выводить «InterruptedException» при возникновении исключения InterruptedException;
Нить ждет в слипе, пока не будет прервана, потом выводит строку в консоль

1.3. нить 3 должна каждые полсекунды выводить «Ура»;
Каждые полсекунды выводится «Ура»

1.4. нить 4 должна реализовать интерфейс Message, при вызове метода showWarning нить должна останавливаться;
Интерфейс реализован. Нить выполняется пока мы не прервем эту нить.
В некоторых решениях я видел this.join(), но прямо говоря, я не понимаю, зачем здесь join(), да и на прохождение задачи эта запись не влияет

1.5. нить 5 должна читать с консоли цифры пока не введено слово «N», а потом вывести в консоль сумму введенных цифр.
Читает. Считает. Выводит
  • ,

package com.javarush.test.level15.lesson12.home01;

Программа работает в соответствии с условиями задачи, но не проходит проверку.

package com.javarush.test.level15.lesson12.home01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово "exit".
2. Для каждого значения, кроме "exit", вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        while (true)
        {
            String s = reader.readLine();
            if (s.equals("exit")) break;
            if (s.matches("[1-9]+"))
            {
                int a = Integer.parseInt(s);
                if (a > 0 && a < 128)
                {
                    print((short) a);
                } else if (a >= 128)
                {
                    print(a);
                }
            } else if (s.matches("\\d+\\.\\d+"))
            {
                print(Double.parseDouble(s));
            } else print(s);
        }

    }

    public static void print(Double value)
    {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value)
    {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value)
    {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value)
    {
        System.out.println("Это тип Integer, значение " + value);
    }
}

Вопрос по задаче com.javarush.test.level18.lesson10.home06

Доброго времени суток! Возник вопрос по задаче. Решил таким способом (см. код). Вроде, все ок, но сервер не принимает. Можете навести на мысль? А то уже глаз замылился…

/* Встречаемость символов
Программа запускается с одним параметром - именем файла, который содержит английский текст.
Посчитать частоту встречания каждого символа.
Отсортировать результат по возрастанию кода ASCII (почитать в инете). Пример: ','=44, 's'=115, 't'=116
Вывести на консоль отсортированный результат:
[символ1]  частота1
[символ2]  частота2
Закрыть потоки. Не использовать try-with-resources

Пример вывода:
, 19
- 7
f 361
*/

public class Solution{
    public static void main(String[] args) throws IOException{

        HashMap<Integer,Integer> map = new HashMap<Integer, Integer>();

        for (int i = 0; i < 128; i++)
            map.put(i, 0);

        FileInputStream fileInputStream = new FileInputStream(args[0]);

        while (fileInputStream.available()>0){
            int i = fileInputStream.read();
            int count = map.get(i);
            count++;
            map.put(i,count);
        }

        for (Map.Entry<Integer,Integer> el:map.entrySet())
            if(el.getValue()>0){
                int i = el.getKey();
                System.out.println((char)i + " " + el.getValue());
            }

        fileInputStream.close();
    }
}
  • ,

level07.lesson09.task04 У кого быстрее алгоритм работает? Конкурс.

Интересно, полагаю, будет посмотреть на самые быстродействующие алгоритмы решения этой задачи. Естественно, что число записей в списке должно быть таким, чтобы время выполнения программы на компьютере можно было бы легко вычислить. Так создадим единый список из ста тысяч строк и сравним время выполнения…

N.B.!
1. Согласно пункту 2.2. предложенной задачи: «удваивать все слова содержащие букву «л».», для единообразия станем так:

На входе:
роза
лира
лоза
ложка
коза
кора
коралл
сорока
носорог
финал

На выходе:
лира
лоза
лоза
ложка
ложка
коза
коралл
финал
финал


2. Список один и тот же, и хотя он формируется путем десяти тысячекратного повторения из десяти строк, считаем его случайным.
3. Срок самостоятельной публикации конкурсных вариантов решения этой задачи истекает 5 февраля 2017 года в 12 часов дня (время московское).
4. Каждый участник форума может самостоятельно оценить быстродействие предложенных вариантов на своем компьютере и поставить «плюсик» тому, кого он считает победителем в этом конкурсе."


/*
ТЕКСТ КОНКУРСНОЙ ЗАДАЧИ СО ВСЕМИ КОРРЕКТИРОВКАМИ ИСХОДНОЙ ЗАДАЧИ level07.lesson09.task04:
*/


/*

2. Метод fix должен:
2.1. удалять из списка строк все слова, содержащие букву «р»
2.2. удваивать все слова содержащие букву «л».
2.3. если слово содержит и букву «р» и букву «л», то оставить это слово без изменений.
2.4. с другими словами ничего не делать.
Пример:
роза
лира
лоза
ложка
коза
кора
коралл
сорока
носорог
финал
...
Выходные данные:
лира
лоза
лоза
ложка
ложка
коза
коралл
финал
финал
...
*/



import java.util.ArrayList;

public class ManipulationsWithTheList {

    public static void main(String[] args) throws Exception
    {
        long startTime = System.currentTimeMillis();

        ArrayList<String> list = new ArrayList<String>();

        for (int i = 0; i < 10000 ; i++) {
            list.add("роза");
            list.add("лира");
            list.add("лоза");
            list.add("ложка");
            list.add("коза");
            list.add("кора");
            list.add("коралл");
            list.add("сорока");
            list.add("носорог");
            list.add("финал");
        }

        list = fix(list);

        for (String s : list)
        {
            System.out.println(s);
        }

        long timeSpent = System.currentTimeMillis() - startTime;

        System.out.println("Эта программа выполнялась " + timeSpent + " миллисекунд.");
    }

    public static ArrayList<String> fix(ArrayList<String> list)
    {
        //напишите тут ваш код

    }
}


Дополнение от 31.01.2017
Уважаемые коллеги!
Настоятельно прошу еще раз ознакомиться со всеми условиями конкурсной задачи. Особо отмечу следующее:
на входе упорядоченная коллекция строк;
на выходе также должна быть упорядоченная коллекция строк (вывод её в консоль используется исключительно для визуального подтверждения верности произведенных манипуляций с исходной псевдослучайной коллекцией);
— сколько времени выполнялся метод fix, просьба, вывести в консоль дополнительно.

Ссылки на все конечные полные тексты программ участвующих в конкурсе будут находиться в самом первом сообщении темы. Просьба к участникам опубликовать их в своих сообщениях с пометкой: «НА КОНКУРС», чтобы я смог бы их собрать вместе и опубликовать.

Конкурсанты:
Torin текст программы содержит отклонения от конкурсной задачи
JuriMik текст программы
Javin текст программы
Himeg текст программы
Тестирование

Проводилось на:
Intel Core i7-2600 CPU @ 3.4 GHz x 4, RAM 16 GB

Windows 7 professional x64
JRE 1.8.0_121
IDE Eclipse Java EE IDE for Web Developers. Version: Neon.1a Release (4.6.1)

Linux Mint 17 Cinnamon 64-bit (v. 2.2.16) 3.13.0-24-generic
JRE 1.8.0_25
IDE Eclipse Java EE IDE for Web Developers. Version: Neon.2 Release (4.6.2)

Средние арифметические значения времени выполнения метода fix (в миллисекундах) подсчитывались по десяти попыткам:

package com.javarush.test.level18.lesson05.task03;

Я слеп и не вижу где ошибка, работает правильно, если я правильно понимаю.

/* Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать бОльшую часть.
Закрыть потоки. Не использовать try-with-resources
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName1, fileName2, fileName3;
        fileName1 = reader.readLine();
        fileName2 = reader.readLine();
        fileName3 = reader.readLine();
        reader.close();

        FileInputStream inputStreamReader = new FileInputStream(fileName1);
        int available = inputStreamReader.available();
        byte[] read = new byte[available];
        int count = inputStreamReader.read(read);
        inputStreamReader.close();

        FileOutputStream fileOutputStream = new FileOutputStream(fileName2);
        fileOutputStream.write(read, 0, (int)Math.ceil(count/2.0));
        fileOutputStream.close();

        fileOutputStream = new FileOutputStream(fileName3);
        fileOutputStream.write(read, (int)Math.ceil(count/2.0),  count/2);
        fileOutputStream.close();
    }
}

level10.lesson11.home09

package com.javarush.test.level10.lesson11.home09;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) влияет на результат.
*/

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

ArrayListwords = new ArrayList();
for (int i = 0; i < 20; i++)
{
words.add(reader.readLine());
}

Map<String, Integer> map = countWords(words);

for (Map.Entry<String, Integer> pair: map.entrySet())
{
System.out.println(pair.getKey() + " " + pair.getValue());
}
}

public static Map<String, Integer> countWords(ArrayListlist)
{
HashMap<String, Integer> result = new HashMap<String, Integer>();

int count;//напишите тут ваш код
for (int i=0; i<list.size()-1; i++)
{
count=1;
if (!result.containsKey(list.get(i)))
{
for (int j=i+1; j<list.size(); j++)
{
if (list.get(i).equals(list.get(j))) count++;
}
if (count>1) result.put(list.get(i), count);
}
else continue;

}

return result;
}

}


Не понимаю, что только не пробовал. Вроде все работает. Тестирование не проходит