Задать вопрос
  • Как добавить русский словарь в Android Studio?

    @odissey_nemo
    Да, это и есть искомая локализация, встроенная в Intelij но выделенная в Android Studio. Но нигде об этом ни полслова. Этот ответ был первым найденным верным, спасибо!
  • Влияют ли на производительность неиспользуемые библиотеки?

    @odissey_nemo
    Евгений, грамотное решение!
    Но в идеале хотелось бы избегать ручного труда хотя бы с библиотеками.
    Ведь библиотека может пригодиться и в других проектах. И каждый раз её вручную чистить - не в каждом проекте это хорошо.
    И тут опыт, реализованный в Delphi (как там сегодня, не в курсе, так было лет 15 назад) был бы желателен. Компилятор сам разберёт, качественно лучше человека, какие отдельные объектные модули (классы для Java и C#) нужны, а какие - нет.
  • Будет ли работать бинарный поиск, если в массиве есть пробелы?

    @odissey_nemo
    Бинарный поиск работает верно, если массив чисел отсортирован (для определённости - по возрастанию). Сами числа могут принимать любые значения из диапазона своего типа. Скажем, целые знаковые 4-х байтовые (в Java это int) имеют диапазон [-2147483648..2147483647], т.е. от отрицательного минимума до положительного максимума.
    Числа могут повторяться и разница между соседями может быть произвольной. Главное - последовательность не должна убывать.
  • Какую IDE выбрать для разработки на Java?

    @odissey_nemo
    Некоторым (e.g. мне) нравятся огурцы. По причине полного искажения вкуса дынь и арбузов(
  • Как получить все точки в промежутке координат XY1;XY2?

    @odissey_nemo
    Это в ГИС называется обычно bounding box или envelope или Rectangle.
    Описывается координатами угловой точки (обычно левой нижней) и шириной и высотой прямоугольника (например, в Java есть класс: Rectangle2D).
    В большинстве графических библиотек есть методы, типа bb.contains(pnt), где bb - это заданный bounding box, а pnt - это проверяемая точка. Вот древний метод из Java в классе Rectangle2D:
    public boolean contains(double x, double y) {
            double x0 = getX();
            double y0 = getY();
            return (x >= x0 &&
                    y >= y0 &&
                    x < x0 + getWidth() &&
                    y < y0 + getHeight());
        }

    Этим методом проверяются и отбираются все точки в цикле на предмет вхождения в прямоугольник.
  • Ошибка при чтении из файла Java. Как исправить?

    @odissey_nemo
    Ставьте имя файла в командной строке, получая его в программе как:
    ...
    String path = args[0]; // и другие имена как args[1]... args[N]
    ...

    И тогда все ошибки будут там, а не в коде программы. А в коде Вы создали неверное имя файла.
    При наличии пробелов в имени файла ставьте имя файла между двойными кавычками: "c:\temp\dir with path\file1.txt".
  • Как с помощью GPS и Arduino, надёжно и безопасно вывести человека из леса?

    @odissey_nemo
    Компас - лучший GPS/Глонасс, потребляет милливольты и микроамперы за 100 лет (если подключить к аккумулятору на нагрев), не разбивается при ударе, если не из пластмассы (у меня алюминиево-медный геологический времён СССР).
    Способствует развитию пространственного мышления и самостоятельности в принятии решений.
    Дёшев!

    Все перечисленные свойства абсолютно не рыночные и в РФ подвергаются гонениям на самом высшем уровне)))
  • Какие российские VPN остались?

    @odissey_nemo
    vldkr, да, 2014 год - год полной победы мирового министерства правды, в лице кремлёвского его департамента, над остатками теоретической свободы мнений в РФ.
    Как раз весной 2014 были тихо, без скандалов, закрыты последние из реально независимых, небольших сайтов и сайтиков.
    В это время тусовался на iraq-war.ru (бывший iraqwar.ru, где публиковался Рамзай), знал всех модераторов, владельца. И уверен - это были максимально независимые люди, искавшие и публиковавшие альтернативные факты для любых официальных событий.
    Большие порталы не закрывались, а единогласно переходили под внешнее управление.

    Смысла читать что-то одно или даже всё (тогда это будет генератор белого шума) в поисках истины сегодня не вижу.
    Но каждый сам решает, что хорошо, а что - плохо. Это ещё одно достижение департамента правды РФ.
  • Как удалить из hashmap все элементы с одинаковым значением?

    @odissey_nemo
    Davidaa_WoW, понимание тоже дорогого стоит)))
    Главное - понимать принципы. Знание немногих принципов заменяет незнание многих фактов.
  • Сравнение значения со значениями массива и нахождение ближайшего значения?

    @odissey_nemo
    Вопрос не понятен.
    Если надо просто найти в массиве ближайшее значение к некой константе, как написано, то просто цикл по всем значениям массива со сравнением с этой константой. Также заводим переменную min_dist = Float.MAX_VALUE;
    Если разница между значением и константой [по модулю] меньше min_dist, записываешь эту разницу в min_dist . В другую переменную (min_val) пишешь само значение из массива (или индекс его, без разницы) И так до конца.
    На выходе имеем min_val как значение с наименьшей разницей (или его индекс).
    Если индекс, то он будет последним из индексов для всех значений массива с той-же разницей.
    При чём тут шаг 0.25 - не ясно.
    Из кода выходит какое-то другое условие, наподобие поиска в диапазоне или ещё что. Типа того, что total выводится, когда оно вне диапазона текущего значения массива +/- 0.25
    Попробуйте сформулировать чётче.
  • Как сравнить два ArrayList`a по их содержимому?

    @odissey_nemo
    Dmitry Roo,
    Дело вкуса. Мне привычнее и понятнее циклы и коллекции. Стримы просто без надобности.
    Хотя не отрицаю, что кода с ними меньше. Но меньше - не значит понятнее. Чем выше абстракция, тем она обычно сложнее.

    Пруфы в Инете не искал. Делал сам.
    А циклы и коллекции быстрее по простой причине. Стримы слишком универсальны. должны удовлетворить всем типам данных. Поэтому с помощью них трудно выбрать все варианты и особенности структур данных. Например, в одном цикле можно сделать несколько произвольных операций над элементом коллекции, что является естественным.
    В то же время стримы. их операторы делают что-либо на лету, за один проход. Стало быть. понадобится несколько проходов для доступа к разным элементам и их данным.
    Грубо говоря, там где надо два стрима запустить, достаточно одного цикла.
    В любом случае, разница в производительности вряд ли будет критической. Главное - понятность и ясность кода для автора. И для будущих читателей.
    Это - главное!
  • Как определить центры зон определенных цветов на изображении?

    @odissey_nemo
    Если гарантированно известно, что каждый уникальный цвет присвоен единственному связному полигону, и известен цвет границы (например чёрный), то просто проходим по всем пикселам, отбрасывая чёрные и суммируем их координаты группируя по цвету.
    Если цвет встретился первый раз, заводим для него необходимые структуры: цвет, счётчик пикселей (чтобы делить на него), суммы по координатам (чтобы их делить).
    В итоге имеет число цветов, и по каждому цвету его средние координаты (центр тяжести), где бы они не были (даже вовне полигона данного цвета).
  • Как в списке отличить буквы и ЗАГЛАВНЫЕ БУКВЫ от всего остального?

    @odissey_nemo
    wolverine777, тогда не понимаю, в чём дело.
    >java -version
    java version "1.8.0_241"
    Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
  • Как сравнить два ArrayList`a по их содержимому?

    @odissey_nemo
    Мне кажется ,что вы на каждой итерации цикла перезаписываете ваши found новым значением для найденного текущего значения rbs в partnerList.
    Надо не перезаписывать. а добавлять, типа:
    ...
    found.add( partnerList.stream()
           .filter(paymentPartner ->
           paymentPartner.getAccount().equals(rbs.getAccount()) && paymentPartner.getSum() == rbs.getSum())
           .collect(Collectors.toList()));
    ...
  • Как сравнить два ArrayList`a по их содержимому?

    @odissey_nemo
    Да, это было бы эффективнее, хотя тоже не слишком понятно с первого взгляда.

    Наблюдал, что просто использование стримов, где только можно, резко тормозит скорость работы программы.
    Старые добрые и простые коллекции , в этом плане, гораздо быстрее. Хотя бы за счёт вынужденной продуманности их применения.

    Я так понимаю, человеку надо найти в двух списках все одинаковые чеки PaymentPartner и PaymentRBS с одинаковыми номерами счетов и суммами в них?
    При этом ведь могут быть даже одинаковые чеки с теми же суммами в любом списке, например.
    Если да то, может быть, удастся обойтись одним Set, если бы оба класса были бы одинаковыми или имели общий интерфейс/класс-предок для getAccount и getSum(). И переписать у них hashCode() и equals() так, чтобы они захватывали и аккаунт и сумму.
    hasCode() можно сделать как для строки, состоящей из текстовых представлений аккаунта и суммы, через запятую. Например:
    public int hashCode() { return String.format("%d,%f", getAccount(), getSum()).hashCode();  }


    В этом случае Set заполнить из списка rbsList. Затем пройтись по всему списку из partnerList, изучая. если ли элементы из него уже в Set. Те элементы из partnerList, что уже присутствуют в Set и есть искомые PaymentPartner. имеющие аналог в rbsList.
    Итого - всего по одному проходу по каждому списка (N+M). В отличи от M*N сравнений в указанном коде.
    Не уверен точно, но кажется работоспособным. С учётом высказанных выше пожеланий к классам.
  • Как в списке отличить буквы и ЗАГЛАВНЫЕ БУКВЫ от всего остального?

    @odissey_nemo
    wolverine777, Возможно, проблема в версии JRE Java, использованной в вашем эмуляторе. У меня библиотека Java 8.
    Попробуйте заменить на код работающий и под 5-й версией Java:
    public static void main(String[] args) {
            char[] aMixed = "aAbBqwerrtyASFDSDFDF0123456   +_)(£*^\"(£)(&07097097".toCharArray();
            int cntLower = 0, cntUpper =  0;
            for (int ch: aMixed) {
                if (Character.isLowerCase(ch))
                    cntLower++;
                else if (Character.isUpperCase(ch))
                    cntUpper++;
            }
            String ver = System.getProperty( "java.version" );
            System.out.printf("Java version: %s. ", ver == null ? "<unknown>" : ver);
            System.out.printf("Found lower case chars %d, upper case chars %d%n", cntLower, cntUpper);
        }

    Судя по всему, на эмуляторе где ошибка возникает, стоит JRE нижней версии, где просто нет метода isXXXXXCase(char), но уже есть (надеюсь :o) isXXXXXCase(int), что в данном случае монопенисуально, на не слишком глубокий взгляд.
    В этом коде заодно и на версию Java посмотрим, если он обозначен в системе вообще .

    Печатать будет теперь так:

    Java version: 1.8.0_241. Found lower case chars 9, upper case chars 11
  • Почему у строк всегда одиноковый hashcode()?

    @odissey_nemo
    Простая программа поможет разобраться:
    private static void main(String[] args)
            String str1 = "Hello"; // строка-константа помещается компилятором в общий пул строк
            String str2 = "Hello"; // строка-константа помещается компилятором в общий пул строк
            String str3 = new String ("Hello");  // новая строка хранится вне пула, в хипе
            String str4 = new String ("Hello").intern(); // intern опять помещает строку в общий пул строк
            System.out.println("Проверка по равенству значений:");
            System.out.printf("str1.equals(str2) => %b%n", str1.equals(str2));
            System.out.printf("str2.equals(str3) => %b%n", str2.equals(str3));
            System.out.printf("str3.equals(str4) => %b%n", str3.equals(str4));
            System.out.printf("str1.equals(str4) => %b%n", str1.equals(str4));
            System.out.println("Проверка по равенству ссылок(адресов):");
            System.out.printf("(str1 == str2) => %b%n", str1 == str2);
            System.out.printf("(str2 == str3) => %b%n", str2 == str3);
            System.out.printf("(str3 == str4) => %b%n", str3 == str4);
            System.out.printf("(str1 == str4) => %b%n", str1 == str4);
        }


    Помещение в пул - это проверка, есть ли такая строка уже в пуле. Если да, то из пула берётся имеющаяся там строка (её адрес). Если нет, строка помещается туда для грядущих сравнений на её нахождение там (по её адресу).

    Программа печатает следующее:
    Проверка по равенству значений:
    str1.equals(str2) => true
    str2.equals(str3) => true
    str3.equals(str4) => true
    str1.equals(str4) => true
    Проверка по равенству ссылок(адресов):
    (str1 == str2) => true
    (str2 == str3) => false
    (str3 == str4) => false
    (str1 == str4) => true
  • Как в списке отличить буквы и ЗАГЛАВНЫЕ БУКВЫ от всего остального?

    @odissey_nemo
    public static void main(String[] args) {
            char[] aMixed = "aAbBqwerrtyASFDSDFDF0123456   +_)(£*^\"(£)(&07097097".toCharArray();
            int cntLower = 0, cntUpper =  0;
            for (char ch: aMixed)
                if ( Character.isLowerCase( ch ) )
                    cntLower++;
                else if (Character.isUpperCase(ch))
                        cntUpper++;
            System.out.printf("Found lower case chars %d, upper case chars %d%n", cntLower, cntUpper);
        }

    Печатает следующее: Found lower case chars 9, upper case chars 11

    Ответ верный, никакие символы, кроме букв обеих регистров, в счётчики не проникают.
  • Плавное появление окна JFrame?

    @odissey_nemo
    Конечно, нет. Имел в виду, что при ответе лучше перебрать, чем недобдеть)))
  • Плавное появление окна JFrame?

    @odissey_nemo
    Александр Интересный, без обид, т-щ программист! На вашем акккаунте ведь не написано, "новичок" или "убийца RAD систем"))))