Использование маленького (1-10 объектов) наборы уровня экземпляра в Java

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
6
задан Al. 11 September 2008 в 17:33
поделиться

4 ответа

ArrayList класс в Java имеет только два элемента данных, ссылку на Object[] массив и размер — в котором Вы нуждаетесь так или иначе, если Вы не используете ArrayList. Так единственное преимущество для не использования ArrayList сохраняет одно объектное выделение, которое маловероятно когда-либо быть грандиозным предприятием.

Если Вы создаете и избавляетесь от многих, многих экземпляров Вашего контейнерного класса (и следовательно Ваш ArrayList экземпляр) каждую секунду, у Вас могла бы быть небольшая проблема с маслобойкой сборки "мусора" — но это - что-то для волнения о том, если это когда-нибудь происходит. Сборка "мусора" обычно является наименьшим количеством Ваших забот.

10
ответ дан 8 December 2019 в 14:49
поделиться

Наборам Google оптимизировали наборы для неизменного / небольшого числа элементов. Посмотрите Lists.asList API как пример.

2
ответ дан 8 December 2019 в 14:49
поделиться

Ради хранения простых вещей я думаю, что это - в значительной степени надуманный вопрос. Ваша реализация достаточно гибка, что, если требования изменяются в будущем, Вы не принуждены к рефакторингу. Кроме того, добавление большего количества логики к Вашему коду для гибридного решения просто не стоит того принимающий во внимание Ваш небольшой набор данных и высококачественный из Набора Java API.

3
ответ дан 8 December 2019 в 14:49
поделиться

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

Можно избежать издержек объекта списка полностью при помощи массива. Для движения еще больше хардкора можно объявить поле как Объект и избежать массива в целом для единственного объекта.

Если память действительно является проблемой, Вы могли бы хотеть забыть об использовании экземпляров объектов на низком уровне. Вместо этого используйте большую структуру данных на большем уровне гранулярности.

1
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: