Mostrar ArrayList

Boa tarde, então preciso terminar esse programa, no caso agarrei nessa parte, em que o usuário devera digitar o nome da cidade que deseja pesquisa ou no caso a primeira letra e o sistema busque o nome e os dados da cidade. Se alguém puder ajudar ou quiser melhorar o código feito até agora eu agradeço, segue abaixo.

package Trabalho.Inf.B;

import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.Arrays;

public class Principal {
public static void main(String[] args){
String City, nCidade, nHabitantes, prefeito, vizinhos;
int x = 0, cont =1;
int y = 9;
ArrayList cd = new ArrayList <>();
String nomes = “”;

    do {
    City = JOptionPane.showInputDialog(null,"|ESCOLHA A OPÇÃO DESEJADA|" 
            + "\n1) CADASTRAR CIDADE"
            + "\n2) MOSTRA CIDADES CADASTRADAS"  
            + "\n3) PESQUISAR CIDADE"
            + "\n4) MELHOR ROTA"
            + "\n5) DIGITE ESC PARA SAIR","|ROTA FELIZ|", JOptionPane.PLAIN_MESSAGE);
    
    do {
    if(City.toUpperCase().equals("1")){
        nCidade = JOptionPane.showInputDialog(null,"NOME DA CIDADE: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
        cd.add(nCidade);
        nHabitantes = JOptionPane.showInputDialog(null,"QUANTIDADE DE HABITANTES: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
        cd.add(nHabitantes);
        prefeito = JOptionPane.showInputDialog(null,"NOME DO PREFEITO: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
        cd.add(prefeito);
        vizinhos = JOptionPane.showInputDialog(null,"VIZINHOS: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
        cd.add(vizinhos);
        x = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite qualquer tecla para sair ou 0 para cadastrar outra cidade"));
    }cont++;
    }while ((x==0)&&(cont<=2));

    if(City.toUpperCase().equals("2")){
        
        for(String nome : cd){
		nomes += nome+"\n";
    }
    JOptionPane.showMessageDialog(null, nomes, "TODAS AS CIDADES", JOptionPane.INFORMATION_MESSAGE);
}
    
    if(City.toUpperCase().equals("3")){
        String busca = JOptionPane.showInputDialog(null,"DIGITE A CIDADE DESEJADA: ","PESQUISAR CIDADE", JOptionPane.PLAIN_MESSAGE);
        for(String cd : busca){
            
        }
          
    }
    
    }while (y==9);
}

}

Bom meu amigo, seria melhor vc criar um objeto para as cidade. Aí no caso facilitaria seu programa como o cadastro, a pesquisa, etcs. Aí vc iria fazer um vetor de cidade e trabalhar em cima desse vetor.

Teria como me da um exemplo irmão?

public class Cidade{
        private String nome;
        private int numeroHabitantes;
        private String prefeito;
        private String vizinhos;

      public Cidade(){
      }

      public String getNome(){
             return nome;
      }




public class Principal {
	public static void main(String[] args){
	String City, nCidade, nHabitantes, prefeito, vizinhos;
	int x = 0, cont =1;
	int y = 9;
	List<Cidade> cd = new ArrayList <>();
	String nomes = "";

		do {
		City = JOptionPane.showInputDialog(null,"|ESCOLHA A OPÇÃO DESEJADA|" 
				+ "\n1) CADASTRAR CIDADE"
				+ "\n2) MOSTRA CIDADES CADASTRADAS"  
				+ "\n3) PESQUISAR CIDADE"
				+ "\n4) MELHOR ROTA"
				+ "\n5) DIGITE ESC PARA SAIR","|ROTA FELIZ|", JOptionPane.PLAIN_MESSAGE);

		do {
		if(City.toUpperCase().equals("1")){
			Cidade entidade = new Cidade();
			nCidade = JOptionPane.showInputDialog(null,"NOME DA CIDADE: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
			entidade.setNome(nCidade);
			nHabitantes = JOptionPane.showInputDialog(null,"QUANTIDADE DE HABITANTES: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
			entidade.setHabitantes(nHabitantes);
			prefeito = JOptionPane.showInputDialog(null,"NOME DO PREFEITO: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
			entidade.setPrefeito(prefeito);
			vizinhos = JOptionPane.showInputDialog(null,"VIZINHOS: ","CADASTRO", JOptionPane.PLAIN_MESSAGE);
			entidade.setVizinhos(vizinhos);
			cd.add(entidade);
			x = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite qualquer tecla para sair ou 0 para cadastrar outra cidade"));
		}cont++;
		}while ((x==0)&&(cont<=2));

		
		}

Tente adaptar desse jeito ai… E tem que fazer os getters e Setters