Criar filtros de categoria/data em java

Estou fazendo um sistema de ouvidoria e queria ter um filtro que tu pode buscar por categoria/bairro num determinado período, porém não sei como fazer esse filtro sendo que o usuário teria que inserir tais dados

É difícil responder sem mais contexto, tipo, vc está usando algum framework Web como Spring, ou está usando Swing, ou é pela linha de comando?

Como é a classe que representa a entidade que vc está filtrando? Seria legal mostrar o que vc já tem.

Dando uma resposta bem genérica, vc poderia usar LocalDate, seria algo assim:

import java.time.LocalDate;

public class Program {
  public static void main(String... args) {
    LocalDate dataInicial = LocalDate.of(2020, 12, 31); // 31/12/2020

    LocalDate dataFinal = LocalDate.of(2021, 6, 25); // 25/06/2021

    LocalDate dataDesejada = LocalDate.of(2021, 1, 1); // 01/01/2021

    if (!dataDesejada.isBefore(dataInicial) && !dataDesejada.isAfter(dataFinal)) {
      System.out.println("A data está dentro do intervalo desejado");
    }
  }
}

Digamos que vc tem a classe Produto e deseja ver a lista de alimentos cuja data de válidade venceu, adaptando o exemplo acima, vc poderia fazer algo assim:

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Produto {
  String nome;
  String categoria;
  LocalDate vencimento;

  Produto(String nome, String categoria, LocalDate vencimento) {
    this.nome = nome;
    this.categoria = categoria;
    this.vencimento = vencimento;
  }

  @Override
  public String toString() {
    return String.format("nome: %s, categoria: %s, vencimento: %s", this.nome, this.categoria, this.vencimento);
  }
}

public class Program {
  public static void main(String... args) {
    List<Produto> produtos = Arrays.asList(
        new Produto("Arroz", "Alimento", LocalDate.of(2022, 1, 1)),
        new Produto("Feijão", "Alimento", LocalDate.of(2021, 12, 31)),
        new Produto("Macarrão", "Alimento", LocalDate.of(2021, 2, 1)),
        new Produto("Fermento", "Alimento", LocalDate.of(2021, 2, 1)) //
    );

    List<Produto> produtosVencidos = new ArrayList<>();

    for (Produto produto : produtos) {
      if ("Alimento".equals(produto.categoria) && produto.vencimento.isBefore(LocalDate.now())) {
        produtosVencidos.add(produto);
      }
    }

    for (Produto produto : produtosVencidos) {
      System.out.println(produto);
    }

    // Se já tiver familiaridade com lambdas, pode fazer assim:
    // List<Produto> produtosVencidos =
    //     produtos
    //       .stream()
    //       .filter(produto -> "Alimento".equals(produto.categoria) && produto.vencimento.isBefore(LocalDate.now()))
    //       .collect(Collectors.toList());
    // produtosVencidos.forEach(System.out::println);
  }
}

mas e se for sem arraylist no caso, por BD que é o data.sql, precisaria pegar o endereço dos usuarios e ao fazer pesquisa ter filtro de todos comentarios da regiao por exemplo se pesquisar um bairro vou pegar reclamaçoes daquele bairro

Ah, já que tem banco de dados envolvido eu não vou conseguir ajudar. Eu só sei um pouco de JPA.

Mas dá mais detalhes sobre seu problema, explica se está usando algum framework ou biblioteca, mostra as partes relevantes do seu código para que outros consigam entender melhor a sua necessidade para poderem ajudar.

Opere o banco de dados com Hibernate. Você recupera os campos como objetos Date e trabalha com eles normalmente.

@burnin Vc consegue dizer quais frameworks vc está usando no seu projeto?