level17.lesson10.home02

/* Comparable
Реализуйте интерфейс Comparable<Beach> в классе Beach, который будет использоваться нитями.
*/

public class Beach implements Comparable<Beach>
{
    private volatile String name;      //название
    private volatile float distance;   //расстояние
    private volatile int quality;    //качество

    public Beach(String name, float distance, int quality) {
        this.name = name;
        this.distance = distance;
        this.quality = quality;
    }

    public synchronized String getName() {
        return name;
    }

    public synchronized void setName(String name) {
        this.name = name;
    }

    public synchronized float getDistance() {
        return distance;
    }

    public synchronized void setDistance(float distance) {
        this.distance = distance;
    }

    public synchronized int getQuality() {
        return quality;
    }

    public synchronized void setQuality(int quality) {
        this.quality = quality;
    }

    @Override
    public synchronized int compareTo(Beach o)
    {
        if (getDistance() < o.getDistance() && getQuality() > o.getQuality())
        {
            return 1;
        }
        else if (getDistance() < o.getDistance() && getQuality() < o.getQuality() || getDistance() > o.getDistance() && getQuality() > o.getQuality() || getDistance() == o.getDistance() && getQuality() == o.getQuality())
        {
            return 0;
        }
        else  (getDistance() == o.getDistance() && getQuality() < o.getQuality() || getDistance() > o.getDistance() && getQuality() == o.getQuality() || getDistance() > o.getDistance() && getQuality() < o.getQuality())
        {
            return -1;
        }
        
    }

   // public static void main(String[] args)
   // {
   //     Beach b1 = new Beach("Beach 1", 6, 6);
    //    Beach b2 = new Beach("Beach 2", 5, 7);

    //    System.out.println(b1.compareTo(b2));
   // }
}

Совсем не могу понять, что не так. Вроде бы перебрал все варианты как можно сравнить 2 пляжа, но даже если мэйн уберу, то не принимает.
  • ,

level07.lesson09.task03

   Добрый день, уважаемые. Сижу над очередной задачей по ArrayList, и ещё больше понимаю, что абсолютно не понимаю как же в памяти происходят все эти процессы. Для того чтобы выразить свою мысль, я процитирую условие задачи, и как я понимаю, как оно должно работать. Условие задачи:
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
   Значит допустим, есть некий внутренний массив. Изначально мы вносим туда три слова: мама, мыла, раму (условно s1, s2, s3). Соответственно: s1 встаёт на ячейку в массиве «0», s2 — «1», и s3 на «2». По условию задачи нам надо вставить после каждого слова «именно». Как я понимаю, чтобы осуществить это, нам надо как бы «раздвинуть слова в массиве». То есть, s2 поставить в ячейку «2», а s3 в ячейку «4» (как на скриншоте).

Соответственно этому, по-моему сам процесс происходит следующим образом:
  1. Берем данные из ячейки #1 и копируем её в ячейку #2
  2. Данные из ячейки #2 переносятся в ячейку #3
  3. Берем данные из ячейки #3 и копируем в ячейку #4
Теперь в ячейки #1, #3 и #5 вставляем слово «именно». Собственно это я попытался выполнить в программе вручную без цикла, чтобы понять как оно работает.

list.add(2, list.get(1));
        list.add(4, list.get(3));

        list.add(1, "именно");
        list.add(3, "именно");
        list.add(5, "именно");

Вывод этого:
мама
именно
мыла
именно
мыла
именно
раму
раму

Прошу разобраться как же сделать эту задачу, и почему именно так. Заранее благодарен.
P.S. приношу извинение за такое огромное объяснение.
P.P.S. бывают такие темы, когда ну ни в какую не доходит, хоть застрелись.