Создание (и Доступ) Разреженная матрица с записями по умолчанию NA

Спасибо все, кто ответил на этот вопрос.

кажется, что это - действительно трудная задача. Я закончил тем, что сдался и создал статический массив и метод считывания в моем базовом классе.

public abstract class Animal{
    private static Animal[] animals= null;
    public static Animal[] getAnimals(){
        if (animals==null){
            animals = new Animal[]{
                new Dog(),
                new Cat(),
                new Lion()
            };
        }
        return animals;
    }
}

кажется, что Java просто не настраивается для self-discoverability путем, C#. Я предполагаю, что проблема состоит в том, что, так как приложение Java является просто набором .class, выходит друг за другом в каталоге / файл банки где-нибудь, время выполнения не знает о классе, пока на это не ссылаются. В то время загрузчик загружает его - что я пытаюсь сделать, обнаруживают его, прежде чем я сошлюсь на него, который не возможен, не выходя в файловую систему и взгляд.

мне всегда нравится код, который может обнаружить себя вместо меня имеющий необходимость сказать это о себе, но увы это работает также.

Еще раз спасибо!

14
задан Community 23 May 2017 в 12:07
поделиться

2 ответа

Yes, Thierry's answer is definitely true I can say as co-author of the 'Matrix' package...

To your other question: Why is accessing "M" slower than "Y"? Основной ответ заключается в том, что «M» намного реже, чем «Y», следовательно, намного меньше и - в зависимости от размеров окружения и оперативной памяти вашей платформы - время доступа быстрее для гораздо меньших объектов, особенно для индексации в них. .

11
ответ дан 1 December 2019 в 10:03
поделиться

Почему вам нужны значения NA по умолчанию? Насколько мне известно, матрицы разрежены только в том случае, если в них есть нулевые ячейки. Поскольку NA - ненулевое значение, вы теряете все преимущества разреженной матрицы. Классическая матрица еще эффективнее, если в ней почти нет нулей. Классическая матрица похожа на вектор, который будет разрезан по размерам. Таким образом, он должен хранить только вектор данных и размеры. Разреженная матрица хранит только ненулевые значения, но также сохраняет их местоположение. Это преимущество, если и только если у вас достаточно нулевых значений.

16
ответ дан 1 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

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