Ajuda com arrays

Boa noite pessoal, estou com algumas duvidas em relação a um projeto que tenho q fazer, se alguém puder ajudar eu agradeço. Então, no projeto tenho que desenvolver um sistema pra automatizar o processo de projeto de cabeamento de uma empresa. O sistema deve conhecer as cidades e regiões englobadas na sua área de cobertura. A classe Cidade tem os seguintes atributos:

int código
String nome
double população
String estado
String país
Região região

A classe Região tem os atributos:

int código
String nome

Tem outra classe que é uma Coleção de Cidades. Dentro dessa classe um dos métodos é o de adicionar cidades. Dai uma primeira dúvida: na hora de adicionar uma cidade como eu faço pra informar o nome da região se a região é do tipo região e não um String? Outra dúvida: onde eu devo adicionar as regiões?

Tem mais coisas pra fazer no projeto e eu já fiz quase toda a base(todas as classes) mas ainda falta esses dois detalhes.

Seria legal usa a coleção MAP ela recebe uma chave e um valor, a chave que no caso seria o codigo voce colocaria pra receber um Int, e o valor(nomeRegiao) String…

Eu ainda to no inicio da disciplina de POO e ainda nao vi sobre essa coleção MAP, mas vou dar pesquisada nela pra ver se consigo entender. Valeu:+1:

Apostila da caelum explana bem essa parte se collections.

Pessoal uma dúvida em relação a array (lá no final do codigo): `
Se alguem puder ajudar, eu agradeço.

    public class Classe_Principal {

    public static void main(String[] args) {
        
        
       ColeçãoCidades ListaCidades = new ColeçãoCidades();
        
        //Adicionar regiões
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Digite quantas regiões serão criadas: ");
        int quant = sc.nextInt();
        
        Scanner sc3 = new Scanner(System.in);
        
        Regiao[] regioes = new Regiao[quant];
        for (int i=0;i<quant;i++){
            System.out.print("\nInforme o nome da região: ");
            String reg = sc3.next();
            System.out.print("\nINforme o código da região: ");
            int cod = sc3.nextInt();
           regioes[i]= new Regiao(cod,reg);
        }
        
              
        
        // Menu
        MenuCidade(ListaCidades);
        }
        
        
        private static void MenuCidade(ColeçãoCidades lista) {
        
        Scanner sc2 = new Scanner(System.in);
        int op;
        
        do{
            // Apresentar as opções
            System.out.print("\n\tSegue abaixo as opções disponíveis para o menu cidade...\n\n" + 
                            "1) Adicionar cidade\n" + 
                            "2) Pesquisar Cidades Por Região\n" + 
                            "3) Pesquisar Cidades Por Estado\n" + 
                            "4) Pesquisar Cidades Por País\n" + 
                            "5) Pesquisar Cidades com Mais de 'X' habitantes\n" + 
                            "6) Remover cidade por nome\n" +
                            "7) Remover cidade por código\n" +
                            "8) Pesquisar Cidades Com Nível De Complexidade Maior Que 'X'\n" +
                            "0) Sair\n");
            System.out.print("Digite uma opção: ");
            op = sc2.nextInt();
            
            // Verificar se o valor dado está entre as opções válidas...
                        if((op < 0) || (op > 8)){
                            System.out.println("\n\tOpção inválida - Tente novamente");
                        }else
                        switch(op){
                        
                        case 1: Cidade cid = new Cidade();
			        Cidade(cid);
				lista.adicionarCidade(cid);
				break;
                                
                        case 2: System.out.print("NOme da região: ");
                                String regiao = sc2.nextLine();
                                lista.pesquisaCidadesPorRegião(regiao);
                                break;
                                
                        case 3: System.out.print("NOme do Estado: ");
                                String estado = sc2.nextLine();
                                lista.pesquisaCidadesPorEstado(estado);
                                break;
                                
                        case 4: System.out.print("Nome do País: ");
                                String pais = sc2.nextLine();
                                lista.pesquisaCidadesPorPaís(pais);
                                break;
                                
                        //case 5:
                                
                        case 6: System.out.print("Nome da cidade: ");
                                String nome = sc2.nextLine();
                                lista.removeCidadePorNome(nome);
                                break;
                                
                        case 7: System.out.print("Código da cidade: ");
                                int codigo = sc2.nextInt();
                                lista.removeCidadePorCódigo(codigo);
                                break;
                                
                        //case 8:
                        
                        }
        }while (op!=0);
        
     }    
    
        public static Cidade Cidade (Cidade Cid){
        Scanner sc = new Scanner(System.in);
                
        //Apresentar o menu cadastro...
        System.out.println("\n\tCadastro de nova cidade");
        
        //Apresentar o menu cadastro...
	System.out.println("\n\tCadastro de nova cidade");
	
	System.out.print("\nCódigo da cidade: ");
	int codigo = sc.nextInt();
	
	System.out.print("\nNome da cidade: ");
	String nome = sc.nextLine();
	
	System.out.print("\nPopulação: ");
	double populacao = sc.nextDouble();
			
	System.out.print("\nEstado: ");
	String estado = sc.next();
	
	System.out.print("\nPaís: ");
	String pais = sc.next();
	
	System.out.print("\nRegião: ");
	String reg = sc.next();
	//pesquisaRegiao(Regiao[] regioes,reg);    //Teria como eu criar um metodo aqui passando o array que eu criei lá em cima e a string que eu digitar? Esse metodo iria pesquisar o array para ver se existe a região informada.
        
        System.out.println("\n\tCadastro realizado com sucesso!!!");
        
        return Cidade;
    }
    
}