Imprimir uma array separando as informações

Boa noite pessoal, Seguinte… tenho uma classe “cadastro” contendo (nome, celular, email endereço cpf e cnpj) e outras duas classe “PessoaFisica” e “PessoaJuridica” essas duas classe extend da classe “Cadastro”. tenho a classe “StartApp” que é aonde eu coleto os dados do cadastro… então nessa classe eu fiz um menuzinho básico perguntando se ele quer cadastrar uma PF ou uma PJ e se ele quer listar as PJ ou as PF armazenada na array. Estou armazenando tanto os dados da pessoa juridica quanto o da pessoa fisica na mesma array, entao minha duvida surgiu agora… Quando o usuario escolher no menu listar, ele vai escolher qual tipo de pessoa ele vai querer listar. Como eu vou imprimir so as pessoa juridica ou as fisicas dentro da array?

vou colar o codigo do StartApp pra voces entenderem melhor.

package br.edu.univas.main;

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

import com.sun.javafx.geom.AreaOp.AddOp;

import br.edu.univas.model.Cadastro;
import br.edu.univas.model.PF;
import br.edu.univas.model.PJ;

public class StartApp {
private Scanner scanner = new Scanner(System.in);
private List pessoas = new ArrayList();

public static void main(String[] args) {
	
	StartApp start= new StartApp();
	start.iniciar();
	
}

public void iniciar() {
	int op = 0;
	do {
		System.out.println("\n\n****CADASTRO DE PESSOAS****");
		System.out.println("1- cadastrar\n2- listar PF\n9- sair");
		op= scanner.nextInt();
		scanner.nextLine();
		Cadastro cadastro;
		if(op == 1) {
			System.out.println("cadastrar pessoa fisica");
			cadastro();
		}else if(op == 2) {
			System.out.println("listar");
			listar();
		}else if(op== 9) {
			System.out.println("fim de cadastro");
		}else {
			System.out.println("opçao incorreta");
		}
	}while(op!= 9);
	
	
}

public void cadastro() {
	
	System.out.println("1- PF\n 2-PJ");
	int op = scanner.nextInt();
	scanner.nextLine();
	Cadastro cadastro = null;
	
	if(op==1) {
		cadastro = new PF();
		System.out.println("nome");
		cadastro.setNome(scanner.nextLine());
		System.out.println("celular");
		cadastro.setCelular(scanner.nextLine());
		System.out.println("email");
		cadastro.setEmail(scanner.nextLine());
		System.out.println("endereço");
		cadastro.setEndereço(scanner.nextLine());
		System.out.println("Cpf");
		cadastro.setCpf(scanner.nextLine());
		
		pessoas.add(cadastro);
		
	}else if (op ==2) {
		cadastro = new PJ();
		System.out.println("nome");
		cadastro.setNome(scanner.nextLine());
		System.out.println("celular");
		cadastro.setCelular(scanner.nextLine());
		System.out.println("email");
		cadastro.setEmail(scanner.nextLine());
		System.out.println("endereço");
		cadastro.setEndereço(scanner.nextLine());
		System.out.println("cnpj:");
		cadastro.setCnpj(scanner.nextLine());
		
		pessoas.add(cadastro);
	}
	
}

public void listar() {
	int op = 0;
	System.out.println("1-PF \n2-PJ");
	op= scanner.nextInt();
		
}

}

QUEM PUDER ME AJUDA, FICAREI MUUUITO AGRADECIDO!

Bom dia!

Faça a sua varredura na estrutura onde os registros foram guardados comparando por instanceOf.

-Se for PF, mande imprimir
-Se for PJ, mande imprimir

Entao no metodo “listar” eu crio um objeto das classes PF e PJ, e faço um for pra varrer a array e dentro do for eu coloco o if com o instanceof comparando se aquela posição da array instanceof PF ou PJ?

Deu certo aqui amigo! muito abrigado!

Disponha! O importante é ter conseguido fazer o que vc precisava! Abraços