2010-09-16 14 views

Respuesta

129

Estás en la negacion de objeto. Debe usar un objeto que contenga el número, nombre, dirección, teléfono (tal vez podría llamarlo ContactInformation) y poner eso en el mapa.

+72

+1 para el "Objeto de la negación" diagnóstico – helios

+24

yup. "Estás en negación de Objeto". Tengo que conseguir una camiseta con ese eslogan (+1) –

+0

Ejemplo, por favor ... – user441978

49

No. a Map tiene solo una clave. Si desea que su valor para contener más información, envolver las cuerdas de una nueva clase:

public class PersonalInfo { 
    private final String name; 
    private final String address; 
    private final String phone; 

    // constructor and getters 
} 

map.put(number, new PersonalInfo(name, address, phone)); 
+0

+1 por golpearme .... –

+0

Información de personalInfo = new PersonalInfo (nombre, dirección, teléfono); map.put (info.getPhone(), información); –

+8

¡Pon algunos 'finales' allí! –

7

No, un mapa puede tener una sola llave y se asigna a un valor.

Este es el Javadoc de Mapa:

Un objeto que se asigna a los valores claves. Un mapa no puede contener claves duplicadas; cada tecla se puede asignar a un valor como máximo.

Lo que puede hacer es crear una entidad llamada User con algunos detalles, por ejemplo,

public class User implements Serializable { 

    private String firstName; 
    private String lastNumber; 
    private String address; 
    private String phoneNumber; 

    //Generated getters and setters here.... 
} 

después añadirlo al igual que un mapa ....

Map<String, User> userMap = new HashMap<String, User>(); 
User user = new User(); 
//populate user 
userMap.put(uniqueUserID, user); 
0

Como otros tienen dicho, un mapa es un mapeo entre una clave y un valor. Es por ello que el Javadoc para el mapa dice (ya que los genéricos en v5):

Interface Map<K,V> 

... donde K es el tipo de clave, y V es el tipo del valor. Solo < K, V >. Debes definir exactamente dos tipos.

Vale la pena mencionar que en las matemáticas 'mapa' es un término que significa convertir un valor de un tipo en un valor de otro tipo. El Mapa de Java es un reflejo de esto, (como es el mapa de métodos disponible en las colecciones en Scala).

+0

"Vale la pena mencionar que en matemáticas 'mapa' es un término que significa convertir un valor de un tipo en un valor de otro tipo." No estoy seguro de qué significa "tipo" en este contexto, pero aún así diría: No, Los mapas "matemáticos" no son necesariamente lo que usted dice que son (piense en endomorfismos/endofunciones). – Frank

+0

Específicamente, establece la teoría. Donde 'tipo' = un conjunto. Y 'mapa' en el contexto de una función que mapea A -> B. Ese es un efecto similar al proporcionado por los mapas fuertemente tipados de Java. – Synesso

0

Su pregunta sugiere que quiere la clave en cada uno de los 4 campos y todos los demás se convierten en valores. Si bien, en general, se trata de una clave y valores múltiples empaquetados en un objeto.

Confirme lo requerido.

13

La solución 'correcta' es usar un objeto que contiene los valores en los campos de nombre, sino en el espíritu de responder a la pregunta planteada, un simple (si impuro) solución sería utilizar:

Map<String,List<String>> yourMap = new HashMap<String,List<String>>(); 

List<String> info = new ArrayList<String>(); 
info.add(number); 
info.add(name); 
info.add(address); 
info.add(phone); 

yourMap.put(key, info); 

Nota google-collections tiene una serie de clases que implementan esta estructura sacarlo de la caja llamada ListMultimap y su aplicación ArrayListMultimap

+2

Me abstendría de proporcionar código de muestra para una mala solución. Veo el razonamiento para querer explicar eso, pero el código de muestra hace que sea muy probable que simplemente se copie sin saber por qué no es una buena idea. –

+2

todo al servicio de dar a las personas suficiente información para volar su propio pie. 'Sí, señor, si apunta eso a su pie y tira de la pequeña cosa delante del mango, explotará' –

+2

Si bien este tipo de solución podría ser 'peligrosa', también hay alguna esperanza de que la gente la vea y se de cuenta por qué es feo y problemático, más que solo decirlo. Bueno, uno puede esperar al menos ... – sleske

2

Hmmm, podría crear una clase para la persona con el número, nombre, dirección y phoneno, a continuación, se crea un mapa

4

En caso de que desee mantener un mapa de: "número, nombre" -> "dirección, teléfono" y no desea crear una clase para encapsular estos atributos. Es posible que tenga una mirada en el multicircuito útil en Apache Commons Colecciones:

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/keyvalue/MultiKey.html

+0

enlace roto :-( – Tony

+0

https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/keyvalue/MultiKey.html – Tony

Cuestiones relacionadas