Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






ArrayList(int capacity)




Практически все методы класса являются реализацией абстрактных методов из суперклассов и интерфейсов. Методы интерфейса List<E> позволяют вставлять и удалять элементы из позиций, указываемых через отсчитываемый от нуля индекс:

void add(int index, E element) – вставляет element в позицию, указанную в index;

void addAll(int index, Collection<? extends E> c) – вставляет в вызывающий список все элементы коллекции с,начиная с позиции index;

E get(int index) – возвращает элемент в виде объекта из позиции
index;

int indexOf(Object ob) – возвращает индекс указанного объекта;

E remove(int index) – удаляет объект из позиции index;

E set(int index, E element) – заменяет объект в позиции index, возвращает при этом удаляемый элемент;

List<E> subList(int fromIndex, int toIndex) – извлекает часть коллекции в указанных границах.

Удаление и добавление элементов для такой коллекции представляет собой ресурсоемкую задачу, поэтому объект ArrayList<E> лучше всего подходит для хранения неизменяемых списков.

/* пример # 1: создание параметризованной коллекции: DemoGeneric.java */

package chapt10;

import java.util.*;

 

public class DemoGeneric {

public static void main(String args[]) {

ArrayList<String> list = new ArrayList<String>();

// ArrayList<int> b = new ArrayList<int>(); // ошибка компиляции

list.add("Java");

list.add("Fortress");

String res = list.get(0); /* компилятор “знает”

тип значения */

// list.add( new StringBuilder("C#") ); // ошибка компиляции

// компилятор не позволит добавить “посторонний” тип

System. out. print(list);

}

}

В результате будет выведено:

[Java, Fortress]

В данной ситуации не создается новый класс для каждого конкретного типа и сама коллекция не меняется, просто компилятор снабжается информацией о типе элементов, которые могут храниться в list. При этом параметром коллекции может быть только объектный тип.

Следует отметить, что указывать тип следует при создании ссылки, иначе будет позволено добавлять объекты всех типов.

/* пример # 2: некорректная коллекция: UncheckCheck.java */

package chapt10;

import java.util.*;

 

public class UncheckCheck {

public static void main(String args[]) {

ArrayList list = new ArrayList();

list.add(71);

list.add(new Boolean("TruE"));

list.add("Java 1.6.0");

 

// требуется приведение типов

int i = (Integer)list.get(0);

boolean b = (Boolean)list.get(1);

String str = (String)list.get(2);

for (Object ob: list)

System. out. println("list " + ob);

 

ArrayList<Integer> s = new ArrayList<Integer>();

s.add(71);

s.add(92);

// s.add("101");// ошибка компиляции: s параметризован

for (Integer ob: s)

System. out. print("int " + ob);

}

}

В результате будет выведено:

List 71

List true

List Java 1.6.0

Int 71

Int 92

Чтобы параметризация коллекции была полной, необходимо указывать параметр и при объявлении ссылки, и при создании объекта.

Объект типа Iterator может использоваться для последовательного перебора элементов коллекции. Ниже приведен пример заполнения списка псевдослучайными числами, подсчет с помощью итератора количества положитель­ных и удаление из списка неположительных значений.

/* пример # 3: работа со списком: DemoIterator.java */

package chapt10;

import java.util.*;

public class DemoIterator {

public static void main(String[] args) {

ArrayList<Double> c =

new ArrayList<Double>(7);

for (int i = 0;i < 10; i++) {

double z = new Random().nextGaussian();

c.add(z); //заполнение списка

}

//вывод списка на консоль

for (Double d: c) {

System. out. printf("%.2f ",d);

}

int positiveNum = 0;

int size = c.size(); //определение размера коллекции

//извлечение итератора

Iterator<Double> it = c.iterator();

 

//проверка существования следующего элемента

while (it.hasNext()) {

//извлечение текущего элемента и переход к следующему

if (it.next() > 0) positiveNum++;

else it.remove(); //удаление неположительного элемента

}

System. out. printf("%nКоличество положительных: %d ",

positiveNum);

System. out. printf("%nКоличество неположительных: %d ",

size - positiveNum);

System. out. println("\nПоложительная коллекция");

for (Double d: c) {

System. out. printf("%.2f ",d);

}

}

}

В результате на консоль будет выведено:

0,69 0,33 0,51 -1,24 0,07 0,46 0,56 1,26 -0,84 -0,53

Количество положительных: 7

Количество отрицательных: 3






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных