Uploaded by Sick Nick

Java-программирование. Лабораторная работа: Коллекции

advertisement
Кафедра: Математическое и программное
обеспечение ЭВМ
Дисциплина: Java программирование
ЛАБОРАТОРНАЯ РАБОТА № 4
Коллекции
Выполнил:
Проверил:
Череповец, 2019 г.
Задание
Написать и отладить три программы. Первая программа демонстрирует
использование контейнерных классов для хранения встроенных типов
данных.
Вторая программа демонстрирует использование контейнерных классов для
хранения пользовательских типов данных.
Третья программа демонстрирует использование алгоритмов работы с
коллекциями.
Ход работы
Ход работы было решено объединить с кодом программы и
тестированием. Код будет представлен фрагментами. После каждого
фрагмента кода будет следовать скриншот работы.
В программе № 1 выполнить следующее:
1. Создать объект-контейнер в соответствии с вариантом задания (ArrayList)
и заполнить его данными, тип которых определяется вариантом задания
(float).
2. Просмотреть контейнер.
3. Изменить контейнер, удалив из него одни элементы и заменив другие.
4. Просмотреть контейнер, используя для доступа к его элементам
итераторы.
public static void main(String[] args) {
ArrayList<Float> floats = new ArrayList<Float>();
floats.add(13.2f);
floats.add(15.3f);
floats.add(1.5f);
floats.add(0.99f);
floats.add(100.0f);
floats.add(1.555f);
floats.add(999.99f);
floats.add(1101.0101f);
floats.add(33.3f);
floats.add(11.45f);
floats.add(165.555f);
floats.add(454545.1f);
floats.forEach(flo -> System.out.println(flo));
System.out.println("");
floats.remove(2);
floats.remove(2);
floats.set(1, 5.05f);
floats.set(floats.size()-1, 9000.0f);
Iterator<Float> iter = floats.iterator(); //Используем итератор для
перебора коллекции
while(iter.hasNext()){
System.out.println(iter.next());
}
System.out.println("");
5. Создать второй контейнер этого же класса и заполнить его данными того
же типа, что и первый контейнер.
6. Изменить первый контейнер, удалив из него n элементов после заданного и
добавив затем в него все элементы из второго контейнера.
7. Просмотреть первый и второй контейнеры.
ArrayList<Float> floatz = new ArrayList<Float>();
floatz.add(0.1f);
floatz.add(0.2f);
floatz.add(0.3f);
floatz.add(0.4f);
floatz.add(0.5f);
floatz.add(0.6f);
floatz.add(0.7f);
Scanner in = new Scanner(System.in);// Инициализируем сканер
System.out.print("Удалить элементов: ");
int n = in.nextInt();
System.out.print("После: ");
int k = in.nextInt();
if(n + k < floats.size())
{
for(int i = k; i < k + n; i++)
{floats.remove(k); }
}
for(int i = 0; i < floatz.size(); i++)
{floats.add(floatz.get(i));}
floats.forEach(flo -> System.out.println(flo));
System.out.println("");
floatz.forEach(flo -> System.out.println(flo));
System.out.println("");
В программе № 2 выполнить то же самое, но для данных
пользовательского типа.
Пользовательский тип:
8. ТОВАР
имя – String
количество – int
стоимость – float
product.java
import static java.lang.Float.compare;
public class product implements Comparable<product>{
String name;
int quantity;
float price;
public product(String n, int q, float p){
name = n;
quantity = q;
price = p;
}
public String getName() {
return name;
}
public float getPrice() {
return price;
}
public void show()
{
System.out.println(name);
System.out.println(quantity);
System.out.println(price);
System.out.println("");
}
@Override
public int compareTo(product p) {
return compare(price, p.getPrice());
}
}
1. Создать объект-контейнер в соответствии с вариантом задания (ArrayList)
и заполнить его данными (product)
2. Просмотреть контейнер.
3. Изменить контейнер, удалив из него одни элементы и заменив другие.
4. Просмотреть контейнер, используя для доступа к его элементам
итераторы.
ArrayList<product> products = new ArrayList<product>();
products.add(new product("Утюг", 10, 1500f));
products.add(new product("Холодильник", 5, 15000f));
products.add(new product("Пушка", 1, 150000f));
products.add(new product("Телефон", 2, 9999f));
products.add(new product("Парашют", 3, 5000f));
products.add(new product("Табурет на колёсиках", 100, 550f));
products.add(new product("Ботинок", 1, 15f));
products.forEach(flo -> flo.show());
System.out.println("");
products.remove(2);
products.remove(2);
products.set(1, new product("Муляж змеи", 5, 175f));
products.set(products.size()-1, new product("Сапог", 1, 25f));
Iterator<product> iter = products.iterator(); //Используем итератор для
перебора коллекции
while(iter.hasNext()){
iter.next().show();
}
System.out.println("");
5. Создать второй контейнер этого же класса и заполнить его данными того
же типа, что и первый контейнер.
6. Изменить первый контейнер, удалив из него n элементов после заданного и
добавив затем в него все элементы из второго контейнера.
7. Просмотреть первый и второй контейнеры.
ArrayList<product> productz = new ArrayList<product>();
productz.add(new product("Робот-танцор", 24, 2500f));
productz.add(new product("Карманный калькулятор", 1001, 100f));
productz.add(new product("Тетрис", 100, 100f));
productz.add(new product("Копилка" , 20, 50f));
productz.add(new product("Винный бокал", 2, 250f));
productz.add(new product("Хлопушка", 1500, 45.5f));
productz.add(new product("Молния в бутылке", 1, 1000000f));
Scanner in = new Scanner(System.in);// Инициализируем сканер
System.out.print("Удалить элементов: ");
int n = in.nextInt();
System.out.print("После: ");
int k = in.nextInt();
if(n + k < products.size())
{
for(int i = k; i < k + n; i++)
{
products.remove(k);
}
}
for(int i = 0; i < productz.size(); i++)
{
products.add(productz.get(i));
}
products.forEach(flo -> flo.show());
System.out.println("");
productz.forEach(flo -> flo.show());
System.out.println("");
}
В программе № 3 выполнить следующее:
1. Создать контейнер, содержащий объекты пользовательского типа. Тип
контейнера – ArrayList.
2. Отсортировать его по возрастанию элементов. Было выбрано использовать
цену, для сравнения элементов.
3. Просмотреть контейнер.
ArrayList<product> products = new ArrayList<product>();
products.add(new product("Утюг", 10, 1500f));
products.add(new product("Холодильник", 5, 15000f));
products.add(new product("Пушка", 1, 150000f));
products.add(new product("Телефон", 2, 9999f));
products.add(new product("Парашют", 3, 5000f));
products.add(new product("Табурет на колёсиках", 100, 550f));
products.add(new product("Ботинок", 1, 15f));
Collections.sort(products);
products.forEach(flo -> flo.show());
System.out.println("");
4. Используя подходящий алгоритм, найти в контейнере элемент,
удовлетворяющий заданному условию.
5. Переместить элементы, удовлетворяющие заданному условию в другой
(предварительно пустой) контейнер. Тип второго контейнера определяется
вариантом задания (TreeSet).
6. Просмотреть второй контейнер.
Scanner in = new Scanner(System.in);//. Инициализируем сканер
System.out.print("Переместить предметы, чья стоимость больше: ");
float f = Float.parseFloat(in.nextLine());
TreeSet<product> productz = new TreeSet<product>();
for(int i = 0;i < products.size(); i++)
{
if(f < products.get(i).getPrice())
{
productz.add(products.get(i));
products.remove(i);
i--;
}
}
productz.forEach(flo -> flo.show());
System.out.println("");
7. Отсортировать первый и второй контейнеры по убыванию элементов.
8. Просмотреть их.
Collections.sort(products, Collections.reverseOrder());
TreeSet<product> productzRev = (TreeSet)productz.descendingSet();
products.forEach(flo -> flo.show());
System.out.println("");
productzRev.forEach(flo -> flo.show());
System.out.println("");
9. Получить третий контейнер путем слияния первых двух. Тип третьего
контейнера определить самостоятельно (ArrayList).
10. Просмотреть третий контейнер.
ArrayList <product> finalProd = new ArrayList <product>();
products.forEach(flo -> finalProd.add(flo));
productzRev.forEach(flo -> finalProd.add(flo));
finalProd.forEach(flo -> flo.show());
System.out.println("");
Download