Приветствую Вас ГостьВторник, 14.05.2024, 03:33

Программирование на Java, Android, Delphi


Блог

Главная » 2013 » Март » 13 » Collections Framework: класс ArrayList
14:00
Collections Framework: класс ArrayList
Класс ArrayList расширяет класс AbstractList и реализует интерфейс List. Внутри себя он хранит объекты в виде массива объектов. Это обобщенный класс при создании которого нужно указать тип элемента коллекции. Данный класс позволяет обращаться к элементам коллекции по индексу. Примеры:
//класс - элемент коллекции
class Person{
String FirstName;
String SecondName;
String LastName;
short Age;

public Person(String FirstName, String SecondName, String LastName, short Age) {
this.FirstName = FirstName;
this.SecondName = SecondName;
this.LastName = LastName;
this.Age = Age;
}

String ToString(){
return FirstName + " " + SecondName + " " + LastName + " " + ", возраст " + Age + " лет";
}

@Override
public boolean equals(Object obj) {
if (obj instanceof Person){
Person p = (Person)obj;
return p.FirstName == this.FirstName && p.SecondName == this.SecondName && p.LastName == this.LastName && p.Age == this.Age;
}
else
return super.equals(obj);
}

}


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("Иванов", "Александр", "Сергеевич", (short)20));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Новикова", "Светлана", "Сергеевна", (short)30));
CollectionToTextArea(al, jTextArea1);

//вставляем в первую и последнюю позицию
al.add(0, new Person("Первый", "Василий", "Игоревич", (short)100));
al.add(al.size(), new Person("Последний", "Василий", "Игоревич", (short)100));
CollectionToTextArea(al, jTextArea1);

//удаляем из первой и последней позиции
al.remove(0);
al.remove(al.size() - 1);
CollectionToTextArea(al, jTextArea1);

//получаем элемент коллекции по индексу изменяем его
Person p = al.get(1);
p.Age = 99;
p.FirstName = "Пупкин";
CollectionToTextArea(al, jTextArea1);

//
Person p2 = new Person("Новикова", "Светлана", "Сергеевна", (short)30);
if (al.contains(p2)) {jTextArea1.append("Нашли Новикову" + "\n");};


//добавляем несколько одинаковых объектов в коллекцию и находим последнее вхождение объекта в коллекции
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
Person p3 = new Person("Романов", "Владимир", "Петрович", (short)15);
al.add(new Person("Новикова", "Светлана", "Сергеевна", (short)30));
Person p4 = al.get(al.lastIndexOf(p3));
p4.FirstName = "Романоff";
CollectionToTextArea(al, jTextArea1);

//очищаем элементы коллекции
al.clear();
al.add(new Person("Иванов", "Александр", "Сергеевич", (short)20));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Новикова", "Светлана", "Сергеевна", (short)30));
CollectionToTextArea(al, jTextArea1);

//клонируем текущую коллекцию в новую
ArrayList<Person> al2 = (ArrayList)al.clone();
al2.add(new Person("Петров", "Петр", "Петрович", (short)15));
CollectionToTextArea(al, jTextArea1);
CollectionToTextArea(al2, jTextArea1);

//объединяем две коллекции
al.addAll(al2);
CollectionToTextArea(al, jTextArea1);

//добавляем в первую коллекцию элемент и удаляем все элементы, которые встречаются во второй коллекции
al.add(new Person("Пушкин", "Александр", "Сергеевич", (short)20));
al.removeAll(al2);
CollectionToTextArea(al, jTextArea1);

//получаем из коллекции массив
al.add(new Person("Иванов", "Александр", "Сергеевич", (short)20));
al.add(new Person("Романов", "Владимир", "Петрович", (short)15));
al.add(new Person("Новикова", "Светлана", "Сергеевна", (short)30));

//преобразование коллекции в массив объектов Object - неудобно так как для обработки требуется явное преобразование объектов
Object[] objarr = al.toArray();
int sum = 0;
Person tmp_person;
for(int i = 0; i < objarr.length; i ++){
tmp_person = (Person)objarr[i];
sum = sum + tmp_person.Age;
}
CollectionToTextArea(al, jTextArea1);
jTextArea1.append("Общая сумма возрастов " + sum + "\n");


//проеобразование коллекции в массив объектов типа Person - так значительно удобнее
Person[] parr = new Person[0];
parr = al.toArray(parr);
sum = 0;
for (int i = 0; i < parr.length; i ++) sum += parr[i].Age;
jTextArea1.append("Общая сумма возрастов " + sum + "\n");

}
Категория: Java (Библиотека, пакеты Java) | Просмотров: 6493 | Добавил: alex | Теги: Java, коллекции, ArrayList, разработка программ в Рыбинске | Рейтинг: 5.0/1
Категории раздела
Java (Общие вопросы) [17]
Java (Библиотека, пакеты Java) [17]
Java (Разработка программного обеспечения на Java) [5]
Java (Среда разработки NetBeans) [5]
JSF + PrimeFaces [21]
Java EE [11]
Разное [3]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Март 2013  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Архив записей