Colocar mais de uma lista como valor no HashMap

Tenho um arraylist de nome, um arraylist de telefone e outro arraylist de endereço. Como faço para colocar a lista de nomes em hashmap como chaves, cujos valores devem ser as listas de endereço e telefone?

HashMap<String, ArrayList<String>> hash = new HashMap<String, ArrayList<String>>();

ArrayList<String> nome = new ArrayList<>();                                 
                    nome.add(s.getNome());
                               
for (String chave : hash.keySet()) {
            System.out.println("Chave: " + chave);
            System.out.println("Nome: ");
            System.out.println("Endereço: ");
            ArrayList<String> aux = hash.get(chave);
            for (String agenda : aux) {
                System.out.println(agenda);
            }

Dá pra fazer, mas fica meio confuso, não prefere sei lá simplificar isso de alguma forma?

public static void main(String[] args) {

	List<String> nomes = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
	List<String> endereco = new ArrayList<>(Arrays.asList("e1", "e2", "e3", "e4"));
	List<String> telefone = new ArrayList<>(Arrays.asList("t1", "t2", "t3", "t4"));

	HashMap<List<String>, HashMap<List<String>, List<String>>> map = new HashMap<>();

	HashMap<List<String>, List<String>> end_tel = new HashMap<>();
	end_tel.put(endereco, telefone);

	map.put(nomes, end_tel);

	for (Entry<List<String>, HashMap<List<String>, List<String>>> wtf : map.entrySet()) {
		for (String nome : wtf.getKey()) {
			System.out.println(nome);
			for (Entry<List<String>, List<String>> wtf2 : wtf.getValue().entrySet()) {
				System.out.println(wtf2.getKey() + " " + wtf2.getValue());
			}
		}
	}
}

Falar a verdade acho que está até errado a minha implementação, mas pode ser um start. :sweat_smile:
Output:

key: a
[e1, e2, e3, e4] [t1, t2, t3, t4]
key: b
[e1, e2, e3, e4] [t1, t2, t3, t4]
key: c
[e1, e2, e3, e4] [t1, t2, t3, t4]
key: d
[e1, e2, e3, e4] [t1, t2, t3, t4]

Isso que você está querendo fazer ficará confuso, o que dificultará manutenções futuras, eu te desaconselho a seguir por esse caminho. Recomendo que você crie uma classe para fazer esta estrutura de dados, assim:

public class Pessoa {
    private String nome;
    private String endereco;
    private String telefone; //Pode ser uma lista de String se houverem varios telefones
}

Depois, você pode criar uma Lista de “Pessoa”: List<Pessoa> pessoas = ...;

Se endereço e telefone precisarem de mais dados, você pode criar Classes para eles, exemplo:

public class Telefone {
    private String telefone;
    private TipoDoTelefone tipo; //"TipoDoTelefone" é um enum com as opções "RESIDENCIAL", "CELULAR", "TRABALHO", etc.
}

O que você quer fazer, precisaria de dois Maps:

Map<String, String> nome_telefone = ...; //nome é a chave, telefone é o valor
Map<String, String> nome_endereco = ...; //nome é a chave, endereco é o valor
1 curtida

Vlw Julio. Exatamente o que eu preciso.