Можно ли преобразовать коллекцию из подклассов к типу суперкласса?

Как можно преобразовать список категорий в список товаров или товаров в список элементов?
  • 10 мая 2024 г. 12:10
Ответы на вопрос 2
1. Да, можно преобразовать коллекцию из подклассов к типу суперкласса, это называется приведением типов (type casting). Например, если у нас есть список подклассов Product, а суперклассом является Item, то мы можем преобразовать список Product в список Item следующим образом:

```java
List<Product> productList = new ArrayList<>();
List<Item> itemList = new ArrayList<>(productList);
```

2. Чтобы преобразовать список категорий в список товаров или товаров в список элементов, можно воспользоваться методом преобразования коллекций. Например, если у нас есть список категорий и у каждой категории есть список товаров, то можно преобразовать список категорий в список товаров следующим образом:

```java
List<Category> categoryList = new ArrayList<>();
List<Product> productList = categoryList.stream()
                                    .flatMap(category -> category.getProducts().stream())
                                    .collect(Collectors.toList());
```

Аналогично, чтобы преобразовать список товаров в список элементов, можно сделать следующее:

```java
List<Product> productList = new ArrayList<>();
List<Element> elementList = productList.stream()
                                    .flatMap(product -> product.getElements().stream())
                                    .collect(Collectors.toList());
```
List<? extends Item> list = new ArrayList<Category>();
Похожие вопросы