TreeTableView: Como excluir várias linhas ao mesmo tempo?

Olá a todos!
Pesquisei em vários locais, inclusive aqui no fórum, e não encontrei nenhuma resposta sobre a seguinte situação:
Tenho um TreeTableView que carrega vários itens vindos do Banco de Dados. De acordo com a característica de cada item, eles são divididos em nós previamente especificados (são apenas estes nós pré-estabelecidos).
Exemplo dos Nós: Materiais, Medicamentos, Taxas, Aluguéis…

Em um determinado momento, preciso imprimir essa TreeTableView, excluindo algumas linhas que são desnecessárias. Quanto à impressão está tudo ok.
Mas, para ganhar tempo, eu preciso excluir várias linhas de uma vez dessa TreeTableView, apertando o Shift e clicando/selecionando todas as linhas que deverão ser excluídas.

Antes de postar o método que encontrei, vou detalhar como estou fazendo:
Quando abro a TreeTableView, os dados originados do Banco de Dados são salvos em um ObservableList ol_OUTRASDESPESAS. Esse ObservableList é então processado e a TreeTableView é criada com cada item em seu nó específico. Preciso então imprimir essa TreeTableView, mas para isso, em alguns casos, preciso excluir várias linhas ao mesmo tempo.

O que estou fazendo:
Crio uma ObservableList transitória (ol_TEMP) com todas as linhas que estão selecionadas. Criei um laço for que percorre todos os itens da ol_OUTRASDESPESAS e um laço interno que percorre todos os itens da ol_TEMP. Dentro desses laços verifico se existe um ID dentro de ol_TEMP que seja igual ao id de ol_OUTRASDESPESAS. Se os IDs forem iguais, eu excluo o item de ol_OUTRASDESPESAS.

Segue o código:

private void excluirItem_OutrasDespesas() {
ObservableList<TreeItem<objOutrasDespesas>> ol_TEMP = FXCollections.observableArrayList(ttvOutrasDespesas.getSelectionModel().getSelectedItems());
//Percorrendo todos os itens das Listas Se o item atual estiver em ambas, excluir.
for (int j = 0; j<ol_T.size(); j++) {
            for (int i = 0; i<ol_OUTRASDESPESAS.size(); i++) {
                if (Objects.equals(ol_OUTRASDESPESAS.get(i).getId(), ol_T.get(j).getValue().getId())) {
                    //System.out.println("Removendo: "+ol_OUTRASDESPESAS.get(i).getItem());
                    ol_OUTRASDESPESAS.remove(i);
                }
            }
        }
        estruturaBasica();
}

Observação:
estrutura() é apenas uma chamada ao método para reconstruir a TreeTableView.

Essa foi a maneira que encontrei para excluir os itens selecionados, porém não creio que seja a melhor. Sei que em Java existe o método removeAll, porém não consegui aplicar nesse caso.
A minha dúvida é a seguinte: Existe outra opção melhor do que essa? Consigo evitar todos esses loops necessários para excluir todos os itens selecionados?

Assim como vc pega o item selecionado, vc pode pegar oS itemS selecionados com o método:
tree.getSelectionModel().getSelectedItems()
que vai retornar uma lista com os respctivos objetos, dai é só percorrer e fazer oq vc quer.

Rodrigo_Void, obrigado pela resposta!
Eu consigo recuperar todos os itens que forem selecionados. O que não estou conseguindo implementar é:

ol_OUTRASDESPESAS.removeAll(ItensQueForamSelecionados);

Do jeito que fiz fica dando vários e vários loops. Eu queria era evitar esses loops, porque a Lista está criada da seguinte forma:

ObservableList<TreeItem<objOutrasDespesas>> ol_TEMP = ...

e não como:

ObservableList<objOutrasDespesas> ol_TEMP = ...

Gostaria então de saber como implementar o RemoveAll com ObservableList atual:

ObservableList<TreeItem<objOutrasDespesas>> ol_TEMP = FXCollections.observableArrayList(ttvOutrasDespesas.getSelectionModel().getSelectedItems());
ol_OUTRASDESPESAS.RemoveAll(ol_TEMP);