Класс 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"); }
|