Como pesquisar carros pelo valor máximo da diária

Olá pessoal, alguém pode me explicar como eu poderia na case 5 do cód abaixo pesquisar por um valor máximo estabelecido pelo usuário?

Por exemplo, eu cadastro 3 carros, com os seguintes valor de diária 350 450 550
então na case 5 eu peço para pesquisar todos com o valor máximo de 480, após isso ele me imprime os dois carros primeiros cadastrados (350 450).

se alguém puder me ajudar fico agradecido.

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class Principal {
    


public static void main(String[] args) {

    int op;
  
    
    String placa, capacidade, anocarro, valordia, placa1, capacidade1, anocarro1, valordia1, placa2, capacidade2, anocarro2, valordia2  ;
    Scanner sc = new Scanner(System.in);        

    ArrayList<Popular> populares = new ArrayList<Popular>();//Array q armazena os carros populares
    ArrayList<Medio> medios = new ArrayList<Medio>();//Array q armazena os carros médios   
    ArrayList<Grande> grandes = new ArrayList<Grande>();//Array q armazena os carros grandes
    
    
    
    do{ //repete o menu até q seja selecionado a opção 10 - sair
        System.out.println("-------------------------");
        System.out.println("MENU PRINCIPAL LOCADORA DE VEICULOS");
        System.out.println("-------------------------");
        System.out.println("1 - CADASTRAR CARROS POPULARES");
        System.out.println("2 - CADASTRAR CARROS MEDIOS");
        System.out.println("3 - CADASTRAR CARROS GRANDES");
        System.out.println("4 - LISTAR TODOS OS CARROS CADASTRADOS NA LOCADORA DE VEICULOS");
        System.out.println("5 - Pesquisar automóveis informando valor máximo pretendido para a diária, e efetuar uma locação");
        System.out.println("6 - Devolver automóvel informando a data da devolução");
        System.out.println("10 - SAIR");
        System.out.println("Digite sua opção: ");
        op = sc.nextInt();
            
        switch (op) {
        
        case 1:
            Popular p1 = new Popular(); //buffer de popular
            System.out.println("Digite a placa do carro popular: ");
            System.out.flush(); //limpa o buffer do teclado
            placa = sc.next();
            p1.setPlaca(placa);
             
                System.out.println("Digite a capacidade de pessoas no carro popular: ");
            System.out.flush();
            capacidade = sc.next();
            p1.setCapacidade(capacidade);
            
            System.out.println("Digite o ano do carro popular: ");
            System.out.flush();
            anocarro = sc.next();
            p1.setAnocarro(anocarro);
            
            System.out.println("valor base da diária de locação do carro popular: ");
            System.out.flush();
            valordia = sc.next();
            p1.setValordia(valordia);
                 
            populares.add(p1);
                
            break;
            
        case 2:
        Medio p2 = new Medio(); //buffer de Medio
            System.out.println("Digite a placa do carro médio: ");
            System.out.flush(); //limpa o buffer do teclado
            placa1 = sc.next();
            p2.setPlaca1(placa1);
             
                System.out.println("Digite a capacidade de pessoas no carro médio: ");
            System.out.flush();
            capacidade1 = sc.next();
            p2.setCapacidade1(capacidade1);
            
            System.out.println("Digite o ano do carro médio: ");
            System.out.flush();
            anocarro1 = sc.next();
            p2.setAnocarro1(anocarro1);
            
            System.out.println("valor base da diária de locação do carro médio: ");
            System.out.flush();
            valordia1 = sc.next();
            p2.setValordia1(valordia1);
                 
            medios.add(p2);
                
            break;
        case 3:
        Grande p3 = new Grande(); //buffer de Grande
            System.out.println("Digite a placa do carro grande: ");
            System.out.flush(); //limpa o buffer do teclado
            placa2 = sc.next();
            p3.setPlaca2(placa2);
             
            System.out.println("Digite a capacidade de pessoas no carro grande: ");
            System.out.flush();
            capacidade2 = sc.next();
            p3.setCapacidade2(capacidade2);
            
            System.out.println("Digite o ano do carro grande: ");
            System.out.flush();
            anocarro2 = sc.next();
            p3.setAnocarro2(anocarro2);
            
            System.out.println("valor base da diária de locação do carro grande: ");
            System.out.flush();
            valordia2 = sc.next();
            p3.setValordia2(valordia2);
                 
            grandes.add(p3);
                
            break;
            

        
        case 4:
         for (Popular popular : populares) {
      System.out.println(" ");
      System.out.printf("placa do carro popular: ");          
      System.out.println(popular.getPlaca());
      System.out.printf("capacidade de pessoas no carro popular: ");
      System.out.println(popular.getCapacidade());
      System.out.printf("ano do carro popular: ");
      System.out.println(popular.getAnocarro());
            System.out.printf("Valor da diária do carro popular: ");
      System.out.println(popular.getValordia());
      System.out.println(" ");
    }
          for (Medio medio : medios) {
      System.out.println(" ");
      System.out.printf("placa do carro médio: ");          
      System.out.println(medio.getPlaca1());
      System.out.printf("capacidade de pessoas no carro médio: ");
      System.out.println(medio.getCapacidade1());
      System.out.printf("ano do carro médio: ");
      System.out.println(medio.getAnocarro1());
      System.out.printf("Valor da diária do carro médio: ");
      System.out.println(medio.getValordia());
      System.out.println(" ");
    }
        for (Grande grande : grandes) {
      System.out.println(" ");
      System.out.printf("placa do carro popular: ");          
      System.out.println(grande.getPlaca2());
      System.out.printf("capacidade de pessoas no carro popular: ");
      System.out.println(grande.getCapacidade2());
      System.out.printf("ano do carro popular: ");
      System.out.println(grande.getAnocarro2());
            System.out.printf("Valor da diária do carro popular: ");
      System.out.println(grande.getValordia2());
      System.out.println(" ");
    }
        
        break;
        
        case 5:
        break;
        
        case 6:
        break;
        

        case 10:
            System.out.println("Saindo..");
            System.exit(0);
            break;
        
        default:
            System.out.println("Opção inválida!");
            
            break;
            
        }           
    }while (op!=10);    
}
}

Primeira coisa é tentar pensar na lógica do que você tem que fazer. No caso 5 a pessoa vai ter informar qual é o valor máximo que ele quer. Então você vai ter que listar os carros que tiverem um preço Menor ou Igual ao informado. A partir disso você cria uma estrutura de repetição para ler o conteúdo das listas e a cada leitura você verifica se o valor é menor e se for você imprime.