Информация об изменениях

Сообщение Re: стыдно....но спрошу от 16.03.2017 19:03

Изменено 17.03.2017 5:52 Blazkowicz

Re: стыдно....но спрошу
Здравствуйте, зиг, Вы писали:

зиг>не кидайтесь тапками плиз, превратилась совсем в говнокодершу. может, старость.


зиг>есть такой код:

зиг>
зиг>for (ListIterator<Double> it = list.listIterator(); it.hasNext(); ) {
зиг>            Double value = it.next();
зиг>            Double refValue = null;

зиг>if (value != 0) {
зиг>                if (value < 0 && it.hasNext()) {
зиг>                    refValue = it.next();
зиг>                    it.previous();
зиг>                } else if (value > 0 && it.hasPrevious()) {
зиг>                    it.previous();
зиг>                    refValue = it.previous();
зиг>                    it.next();it.next();
зиг>                }
зиг>}
зиг>        ... //какие-то операции с value и refValue
зиг>}
зиг>


зиг>што он делает — проходится по отсортированному списку из чисел (вида -100, -90, -2, 0, 3, 50) , и для каждого из чисел (кроме центрального — 0) находит "пару" — в зависимости оттого если число отрицательное или положительное — это или следующее число в списке, либо предыдущее. ноля быть не может. зачем такое надо не спрашивайте !!


зиг>вопрос — как переписать этот уродский код чтоб было красивее. одобряется использование фич джавы 8 — если они тут подойдут


У меня такое вырисовалось:
  private void processList(List<Double> list) {
        int zeroIndex = findZero(list);
        for (int i = 1; i < zeroIndex; i++) {
            Double value = list.get(i);
            Double refValue = list.get(i - 1);
            process(value, refValue);
        }
        for (int i = zeroIndex + 1; i < list.size() - 1; i++) {
            Double value = list.get(i);
            Double refValue = list.get(i + 1);
            process(value, refValue);
        }         
    }

    private void process(Double value, Double refValue) {
        //какие-то операции с value и refValue
    }

ЗЫ. Про надежность сравнения ==/!= double в курсе же?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: стыдно....но спрошу
Здравствуйте, зиг, Вы писали:

У меня такое вырисовалось:
  private void processList(List<Double> list) {
        int zeroIndex = findZero(list);
        for (int i = 1; i < zeroIndex; i++) {
            Double value = list.get(i);
            Double refValue = list.get(i - 1);
            process(value, refValue);
        }
        for (int i = zeroIndex + 1; i < list.size() - 1; i++) {
            Double value = list.get(i);
            Double refValue = list.get(i + 1);
            process(value, refValue);
        }         
    }

    private void process(Double value, Double refValue) {
        //какие-то операции с value и refValue
    }

ЗЫ. Про надежность сравнения ==/!= double в курсе же?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>