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());
```