Como pesquisar objetos em arraylist

Tenho um ArrayList da Classe itemPedido que tem a ClasseProduto e a ClassePedido. Como posso fazer um indexof para achar o id do produto na lista itemPedido.

Você pode fazer a pesquisa utilizando o filter:

ItemPedido item = itemPedidos.forEach(itemP -> itemP.getProduto().getId().equals(id)).findFirst().orElse(null);

Os metodos indexOf e contains não servem?

Esses métodos buscam baseado na referência do objeto, que seria o padrão do método equals. Você poderia alterá-lo porém não recomendo que ele seja alterado somente para fazer a pesquisa.

Eu queria sobrescrever o método equals pois nesse contexto o id do Objeto que vai me dizer se um objeto é igual ao outro. Pois não pode ter dois objeto com mesmo ID.

Sim nesse caso faz sentido você sobrescrever o equals. Só que se você fizer isso não há como você procurar os itensPedidos pelo codigo do produto utilizando o método indexOf.
Não sei se ficou claro o que estou dizendo.

Só dá para procurar pelo id do itensPedido. Entendi

Sim, os métodos contains e indexOf, procuram itens baseados do método equals. Caso você precise fazer uma busca através de certos atributos o jeito recomendado é utilizar o filter