2011-08-05 8 views
8

Quiero hacer los siguientes tipos de objetos. Este es mi deseo de alto nivel que me gustaría descubrir en Java:Java: creación de objetos con pares clave/valor?

ListObject (clave, cadena): cada tecla corresponde a un valor de cadena; la clave es una cadena en sí

ListObject (clave, String []): cada tecla corresponde a una matriz de cadenas; la clave es una cadena en sí

ListObject (clave, Cadena, Cadena []): el mismo trato pero con dos campos de valor por clave.

¿Cómo puedo hacer (y usar) objetos de este tipo?

Gracias.

+9

Se llama "Mapa" –

Respuesta

16

Parece que necesita un poco de Map s en lugar de s. Verifique the Javadoc para implementaciones de Mapas; el más común es HashMap, pero también hay disponibles implementaciones ordenadas, concurrentes, determinísticamente iterables, etc.

ListObject: cada tecla corresponde a un valor String; clave es una cadena en sí

Map<String, String> 

ListObject: cada tecla corresponde a una matriz de cadenas; clave es una cadena en sí

Map<String, String[]> 

(o preferiblemente Map<String, List<String>>)

ListObject: misma cosa pero con dos campos de valor por tecla.

Map<String, UserDefinedClassWithTwoFields> 
4

Map<KeyType,ValueType> que está implementado por HashMap<KeyType, ValueType> y TreeMap<KeyType, ValueType>, entre otros - HashMap no está ordenado y TreeMap está ordenado.

otros Mapas útiles son LinkedHashMap que es como HashMap pero repite en orden de inserción, y com.google.common.collect.Maps de guayaba que tiene un montón de métodos de utilidad, y com.google.common.collect.ImmutableMap que es una implementación mapa inmutable.

Para la clave correspondiente a una matriz de cadenas, es posible que desee ver un Multimap que es un mapa con valores múltiples para una clave determinada.

1

mapa se utiliza para crear matrices asociativas en Java.

Mapa para su primer ejemplo. Cada clave de cadena está asociada a un valor de cadena.

Mapa para su segundo ejemplo. Los valores son matrices de String.

Para su último ejemplo, debe crear su propia clase con dos campos: uno a Cadena y uno a Cadena []. Luego, cree un mapa que asocie String a un objeto de su tipo.

0

El tipo Map de Java probablemente sea el truco. A Map<KeyType, ValueType> almacena pares clave-valor, por lo que tendría un Map<String, String>, un Map<String, List<String>> y un Map<String, SomePairType>.

Map es solo una interfaz: debe elegir una implementación. HashMap y TreeMap son sus mejores apuestas. Ambos son buenos, pero TreeMap solo funcionarán con tipos de teclas comparables. Para las claves, ya que String es comparable con otras cadenas, puede usar cualquier implementación de mapa.

2

Puede utilizar Map para este fin. La sintaxis general de Mapa es:

Map<String, SomeObject> = new HashMap<String, SomeObject>(); 

Ahora bien, hay cuatro tipos de mapas en Java:

mapa hash - Utilice este mapa cuando no importa el orden en que los elementos son se muestra cuando iteras sobre el mapa.

CUADRO DE HORA - Versión sincronizada del hash map.

LINKED HASH MAP - Utilice esto cuando se preocupe por el orden de inserción.

MAPA DE ÁRBOL - Utilice esto cuando desee un pedido personalizado.