java – ¿ Como insertar y mostrar datos de un arreglo dentro de otro arreglo?

Estoy programando un ejercicio en Java para el cual tengo que crear una empresa inmobiliaria que tiene una serie de clientes, los cuales tienen en venta unas viviendas.

Hasta ahora los datos de los clientes los estoy guardando en un arreglo. De momento todos los datos eran del tipo String, pero ahora tengo que guardar dentro de clientes las viviendas con sus propios datos, dirección, precio etc.

Tengo claro que debo de añadir los datos de la Viviendas en un arreglo , igual que hice con los Clientes. Lo que no estoy seguro es de si tengo que guardar el arreglo de Viviendas dentro del arreglo de Clientes, o guardar Viviendas en un arreglo independiente, ya que cada cliente tiene un numero de Viviendas.
En principio he añadido el arreglo viviendas en el constructor de Cliente, para pasar el arreglo de viviendas por parametro, aunque esto no sé hacerlo aún .

Imagino que para añadir las Viviendas tendré que hacer un metodo y con un bucle “for” recorrer el arreglo al igual que he hecho con el arreglo de Clientes , pero no sé si tengo que hacerlo en un “for anidado ” dentro del arreglo de Clientes o por separado.

Tampoco sé como debo de programar el metodo de agregar y mostrar viviendas y si los metodos deben de ir en la clase Cliente o en la clase Inmobiliaria.

En principio pensaba hacerlo igual que he hecho con Clientes, ya que los metodos de agregar y mostrar Clientes que iban en la clase Inmobiliaria, se pueden usar igual para agregar y mostrar viviendas, pero en este caso los metodos de agregar y mostrar viviendas los he puesto en la clase Clientes y creo que no funciona.

En resumidas cuentas , esto es lo que tengo hecho hasta ahora :

Clase Cliente:

public class Cliente {
  
  private String nombre;
  private Vivienda viviendaVenta();
  
  public Cliente() {
    this.nombre = "";
    this.viviendaVenta = new Vivienda(10);
  }
   public Cliente(String nombre, Vivienda() viviendaVenta) {
        this.nombre = nombre;
        this.viviendaVenta = viviendaVenta;
  }

  public String getNombre() {
        return nombre;
  }

    public void setNombre(String nombre) {
        this.nombre = nombre;
  }

  public Vivienda() getViviendaVenta() {
        return viviendaVenta;
  }

    public void setViviendaVenta(Vivienda() viviendaVenta) {
        this.viviendaVenta = viviendaVenta;
  }

  public void agregarVivienda(Vivienda v) {
        boolean encontrado = false;
        for (int i = 0; i < viviendaVenta.length && !encontrado; i++) {
            if (viviendaVenta(i) == null) {
                viviendaVenta(i) = v;
                encontrado = true;
            }
        }
        if (encontrado) {
            System.out.println("Vivienda Añadida");
        } else {
            System.out.println("No se ha podido añadir la vivienda");
        }
  }
    
  public void mostrarVivienda() {
        for (int i = 0; i < viviendaVenta.length; i++) {
            if (viviendaVenta(i) != null) {
                System.out.println("Fila: " + i + viviendaVenta(i).toString());
            }
        }
  }

  @Override
    public String toString() {
        return " Cliente: " + " Nombre: " + nombre;
    }

  


}


Clase Vivienda :

public class Vivienda{
  private String direccion;
  
  public Vivienda() {
    this.direccion = "";
  }
   public Vivienda(String direccion) {
        this.direccion = direccion;
  }

  public String getDireccion() {
        return direccion;
  }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
  }

  @Override
    public String toString() {
        return " Vivienda: " + " Direccion: " + direccion;
    }

  


}

Clase Inmobiliaria:

public class Inmobiliaria { 
    
    private Cliente clientes();
    
    public Inmobiliaria() {
        clientes = new Cliente(2);
    }

  public Cliente() getClientes() {
        return clientes;
    }

    public void setClientes(Cliente() clientes) {
        this.clientes = clientes;
    }
    
    public void agregarCliente(Cliente c) {
        boolean encontrado = false;
        for (int i = 0; i < clientes.length && !encontrado; i++) {
            if (clientes(i) == null) {
                clientes(i) = c;
                encontrado = true;
            }
        }
        if (encontrado) {
            System.out.println("Cliente Añadido");
        } else {
            System.out.println("No se ha podido añadir el cliente");
        }
    }

    public void mostrarCliente() {
        for (int i = 0; i < clientes.length; i++) {
            if (clientes(i) != null) {
                System.out.println("Fila: " + i + clientes(i).toString());
            }
        }
    }
}

Clase Principal :

import java.util.Scanner;
class Main {
  public static void main(String() args) {
    Scanner entrada = new Scanner(System.in);
    String nombre, direccionVivienda;
    Inmobiliaria in = new Inmobiliaria();
    
    Cliente c();
    c = new Cliente(2);
    // Bucle que rellenar el arreglo de clientes
    for (int i = 0; i < c.length; i++) {
      System.out.println("Introduce Nombre: ");
            nombre = entrada.nextLine();
            c(i) = new Cliente(nombre); // cliente Nuevo
            in.agregarCliente(c(i));// agrega cliente
    }
    in.mostrarCliente();// muestra cliente

    Vivienda v();
    v = new Vivienda(2);
    // Bucle para rellenar el areglo de viviendas
    for (int i = 0; i < v.length; i++) {
      System.out.println("Introduce Direccion: ");
        direccionVivienda = entrada.nextLine();
        v(i) = new Vivienda(direccionVivienda);// vivienda nueva
        c(i).agregarVivienda(v(i)); // Esto es a modo de muestra . No funciona
    }
  }
}