Java преобразовывает объект [] массив к вектору

О Бойком использовании.

, вероятно, можно взять то, что Вы нуждаетесь и кросс-компилируете его. Таким образом, если Вам просто нужен пакет потока - просто компилируют это и не берут все.

я делаю то же самое с VM Python. PyMite соответствует на микроконтроллере и не использует всю функциональность.

10
задан Carl Manaster 12 July 2009 в 19:03
поделиться

5 ответов

return new Vector(Arrays.asList(elements));

Теперь может показаться, что вы копируете данные дважды, но это не так. Вы действительно получаете один небольшой временный объект ( List из asList ), но он обеспечивает представление массива. Вместо его копирования операции чтения и записи выполняются в исходном массиве.

Можно расширить Вектор и вставить его защищенные поля. Это дало бы относительно простой способ превратить Vector в представление массива, как это делает Arrays.asList . Как вариант, просто копирование данных в поля. Для Java ME это примерно так же хорошо, как и без написания очевидного цикла. Непроверенный код:

return new Vector(0) {{
    this.elementData = (Object[])elements.clone();
    this.elementCount = this.elementData.length;
}};

Конечно, вам, вероятно, лучше использовать Список , чем Вектор . 1. 4 закончил срок службы. Даже 1.5 завершила большую часть своего периода EOSL.

36
ответ дан 3 December 2019 в 13:47
поделиться

imho ваш единственный жизнеспособный вариант:

public Vector getListElements()
    Vector vector = new Vector(this.elements.length);

    for (int i = 0; i < this.elements.length; i++) {
        vector.add(this.elements[i]);
    } 

    return vector;
}
1
ответ дан 3 December 2019 в 13:47
поделиться

Упрощенный компаратор, который выполняет в основном то же самое.

final static class ContactsListComparatorByFirstName implements Comparator {
    public int compare(Object o1, Object o2) {
            // Sticky Entries Implementation
        ContactsListObject clo2 = (ContactsListObject) o2;
        ContactsListObject clo1 = (ContactsListObject) o1;
        if (clo2.getSticky()) return 1;
        if (clo1.getSticky()) return -1;
        return clo1.get_contactFirstName().compareTo(clo2.get_contactFirstName());
    }
}    

Использование дженериков и?: Это было бы просто

static final class ContactsListComparatorByFirstName implements Comparator<ContactsListObject> {
    public int compare(ContactsListObject clo1, ContactsListObject clo2) {
        return clo2.getSticky() ? 1 : // Sticky Entries Implementation
            clo1.getSticky() ? -1 :
            clo1.get_contactFirstName().compareTo(clo2.get_contactFirstName());
    }
}

Но чтобы ответить на ваш вопрос ... (о, я вижу, у Тома уже есть то, что я бы сказал)

1
ответ дан 3 December 2019 в 13:47
поделиться

In J2ME, you're stuck iterating over the array and add the elements one by one.

Vector v = new Vector();
for (int i = 0; i < this.elements.length; i++) {
    v.add(this.elements[i]);
}
2
ответ дан 3 December 2019 в 13:47
поделиться
  1. Скопируйте элементы массива в Вектор или

  2. Используйте Arrays.asList (...) , чтобы вернуть Список , который не совсем Вектор , но вам в любом случае следует кодировать интерфейс List .

1
ответ дан 3 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

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