Главная | Случайная
Обратная связь

ТОР 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 */

packagechapt10;

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 */

packagechapt10;

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-2018 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных