ArrayList Java

Olá, eu estou com uma dificuldade em uma atividade de java na escola, o meu professor pediu para que criemos um Arraylist chamado VeiculoTerrestre, dentro desse ArrayList será introduzido dados de moto e carro (existe uma classe moto e uma classe carro), porém existe um Menu nessa ferramente, onde a opção 1 lista apenas os dados de carros, e a opção 2 apenas os de motos, eu não faço a ideia de como fazer isso já que os 2 estão no mesmo ArrayList, alguém poderia me ajudar nessa questão? *obs: Ele disse que não pode ser criado um id para identificar moto nem carro, exemplo: carro id = 1, moto id = 2, pois ai seria fácil resolver esse problema.

Vc poderia usar uma interface:

public interface Veiculo {
}
public class Carro implements Veiculo {
}
public class Moto implements Veiculo {
}

Com isso, seu ArrayList ficaria assim:

List<Veiculo> veiculosTerrestre = new ArrayList<>();
veiculosTerrestre.add(new Carro());
veiculosTerrestre.add(new Moto());

Eu pensei nisso também isso que você mostrou porém

mas é isso ai que ele deseja, seria o caso deu utilizar o polimorfismo ?

A estrutura de classes usando interface que coloquei de exemplo resolve o problema, porém, em vez de criar uma interface Veiculo, vc terá que criar 2 interfaces: VeiculoAquatico e VeiculoTerrestre, e fazer os devidos tipos implementarem cada uma (ex.: moto é um veículo terrestre, logo: class Moto implements VeiculoTerrestre).

consegue me dizer como ficaria isso na hora de imprimir os dados na tela ?