ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2023
Просмотров: 52
Скачиваний: 1
СОДЕРЖАНИЕ
Лабораторная работа 4 Коллекции объектов
Iterator содержит следующие методы:
ArrayList – это список, реализованный на основе массива.
ArrayList words = new ArrayList();
// В итоге в списке останется элемент с индексом 0 и значением “three”
List apples = new LinkedList();
apples.add(new Apple(“Macintosh”));
apples.add(new Apple(“Granny smith”));
apples.add(new Apple(“Antonovka”));
System.out.println(“Apple sort – “ + a.getSort());
Пример использования итератора
System.out.println("Before: "+list.toString());
Iterator it = list.iterator();
if (it.next().toString().contains("3"))
System.out.println("After: "+list.toString());
sort(List list, Comparator super T> c)
Collections.sort(list, new Comparator() {
public int compare(String o1, String o2) {
Integer i1 = Integer.parseInt(o1);
Integer i2 = Integer.parseInt(o2);
return (i1 > i2 ? -1 : (i1 == i2 ? 0 : 1));
Удаление дубликатов из коллекции
List animals = new ArrayList();
Set tmpSet = new HashSet(animals);
animals = new ArrayList(tmpSet);
Отсортировать множество можно двумя способами:
Основные операции представлены в таблице:
for (char c : "Dinosaurus".toCharArray())
System.out.print(qc.remove()+" ");
// Output: D i n o s a u r u s
Основные операции, описанные в Map
vehicles.put("Mercedes", 235);
System.out.println("Total vehicles: " + vehicles.size());
// Получаем множество ключей и перебираем коллекцию
for (String key : vehicles.keySet())
System.out.println(key + " - " + vehicles.get(key));
// Ищем элемент с ключем “Audi”
if (vehicles.containsKey(searchKey))
System.out.println(searchKey+" max speed is”+vehicles.get(searchKey)+”km/h");
Чтобы отсортировать карту по ключам*, необходимо:
Методы обхода ассоциативного массива
1) for (A key : map.keySet()) { … }
2) for (B value : map.values()) { … }
3) for (Map.Entry entry : map.entrySet()) {
Для сравнения используется метод equals(Object o):
Пример создания составных коллекций
List arrayList = new ArrayList();
// Карта, в которой ключом является объект String, а значением - список
Map> innerMap = new HashMap>();
// Список, элементами которого являются карты, в которых ключом являются
// объекты типа String, а значением – список
innerMap.put("key", arraylist);
String text = listOfMaps.get(0).get("key").get(0);
System.out.println("Таки извлекли: "+ text);
Параметризованные классы (Generics)
GenericClass gc = new GenericClass();
gc.setItem("Some string"); // T -> String
System.out.println(gc.getItem()); //Output: Some string
gc.setItem(42); // T -> Integer
System.out.println(gc.getItem()); //Ouput: 42
static void fromArrayToCollection(T[] a, Collection c) {
for (T element : a) c.add(element);
// Вызываем метод fromArrayToCollection()
String[] strArr = new String[10];
Collection objColl = new ArrayList();
fromArrayToCollection(strArr, objColl); // T -> String
Integer[] intArr = new Integer[10];
Double[] doubleArr = new Double[10];
Collection numColl = new ArrayList();
fromArrayToCollection(intArr, numColl); // T -> Integer
fromArrayToCollection(doubleArr, numColl); // T -> Double
Еще один пример с параметризованными типами
Listlist = new ArrayList(); // Ошибка!
Методы обхода ассоциативного массива
Map map = new HashMap();
1) for (A key : map.keySet()) { … }
2) for (B value : map.values()) { … }
3) for (Map.Entry entry : map.entrySet()) {
entry.getKey();
entry.getValue();
}
Сравнение коллекций
Для сравнения используется метод equals(Object o):
- Списки равны, если содержат равные элементы в одинаковом порядке
- Множества равны, если содержат одинаковые элементы
- Карты (ассоциативные массивы) равны, если содержат одинаковые пары «ключ-значение»
List firstList = new ArrayList();
// add elements...
List secondList = new ArrayList();
// add elements...
if (firstList.equals(secondList))
System.out.println("Collections are equal!");
Пример создания составных коллекций
// Список
List arrayList = new ArrayList();
// Карта, в которой ключом является объект String, а значением - список
Map> innerMap = new HashMap>();
// Список, элементами которого являются карты, в которых ключом являются
// объекты типа String, а значением – список
List
new ArrayList
arraylist.add("Text");
innerMap.put("key", arraylist);
listOfMaps.add(innerMap);
// Извлекаем…
String text = listOfMaps.get(0).get("key").get(0);
System.out.println("Таки извлекли: "+ text);
Параметризованные классы (Generics)
class GenericClass {
private T item;
T getItem() {
return item;
}
void setItem(T item) {
this.item = item;
}
}
// Создаем экземпляр класса
GenericClass gc = new GenericClass();
gc.setItem("Some string"); // T -> String
System.out.println(gc.getItem()); //Output: Some string
gc.setItem(42); // T -> Integer
System.out.println(gc.getItem()); //Ouput: 42
Параметризованные методы
static void fromArrayToCollection(T[] a, Collection c) {
for (T element : a) c.add(element);
}
// Вызываем метод fromArrayToCollection()
String[] strArr = new String[10];
Collection objColl = new ArrayList();
fromArrayToCollection(strArr, objColl); // T -> String
Integer[] intArr = new Integer[10];
Double[] doubleArr = new Double[10];
Collection numColl = new ArrayList();
fromArrayToCollection(intArr, numColl); // T -> Integer
fromArrayToCollection(doubleArr, numColl); // T -> Double
Еще один пример с параметризованными типами
class Parent {
…
}
class Child extends Parent {
…
}
List
list = new ArrayList(); // Ошибка!
List extends Parent> list = new ArrayList(); //ОК
Сделать задания 4, 5
Задания
1. Создайте класс Student, содержащий закрытые поля name, age, averageScore, конструктор, который инициализирует эти поля и get- методы для получения значений этих полей. В методе main() создайте список List с типомЗадания
4. Создать карту Map, содержащую данные любых типов. Вывести все ключи. Вывести все значения. Программа должна предлагать ввести ключ и выводить на экран значение, соответствующее этому ключу, затем наоборот: предлагать ввести значение и выдавать ключ. Если в коллекции нет такого ключа или значения, программа должна выдавать соответствующие уведомления. 5. Создать метод printArray(), который получает массив любого типа (кроме примитивных типов) и выводит на экран каждый элемент. Аналогично создать метод printCollection(). В методе main() создать несколько массивов и коллекций различных типов и вывести на экран их элементы при помощи созданных методов.Домашнее задание
- Создать класс Planet, содержащий закрытые поля distanceToSun, mass и diameter, конструктор, который инициализирует эти поля (расстояние до солнца, масса и диаметр) и get- и set-методы для этих полей. Создать карту Map
, который будет содержать название планеты и класс с информацией о ней. Добавить в карту несколько планет (в коде, а не с клавиатуры). Программа должна предлагать ввести имя планеты и выдавать информацию о ней. Если такой планеты нет в списке, программа должна выдавать соответствующее сообщение. - Сделать то же самое, что и в предыдущей задаче, но информация о планете должна храниться в элементах списка. То есть коллекция должна быть примерно такой: Map
>.