2010-10-20 12 views
9

quiero hacer algo como estomúltiples parámetros en la lista

List<Integer, String, String> 

Quiero ser capaz de recuperar de forma iterativa cualquiera de estos tres parámetros. ¿Cómo puedo hacerlo? Gracias

+0

http://stackoverflow.com/questions/3725703/how-to-store-more-than-one-string-in-a-map/3725732#3725732 relacionados – Bozho

+0

¿Por qué quieres hacer esto ? Generalmente cuando veo esto, es un problema de diseño (hablando de mis propios errores y otros) :-) – TofuBeer

Respuesta

5

Lo que se necesita es una clase de tupla:

public class Tuple<E, F, G> { 
    public E First; 
    public F Second; 
    public G Third;  
} 

A continuación, puede iterar sobre la lista de la tupla, y mirar a cada entrada de la tupla.

List<Tuple<Integer, String, String> listOfTuple; 
for (Tuple<Integer, String, String> tpl: listOfTuple){ 
    // process each tuple 
    tpl.First ... etc 
} 
+0

Gracias. Funciona perfecto! – y2p

+0

@ yO2gO Me alegro de poder ayudar. – jjnguy

+0

@ yO2gO, debería considerar aceptar algunas respuestas a sus preguntas para que en el futuro la gente sepa qué respuesta resolvió su problema. – jjnguy

3

Puede crear una clase contenedora que contenga estas tres variables y luego almacenar ese envoltorio-objeto en la lista.

Por ejemplo

public class ListWrapperClass { 
    private String firstStringValue; 
    private String secondStringValue; 
    private Integer integerValue; 

    public String getFirstStringValue() { 
     return firstStringValue; 
    } 

    public void setFirstStringValue(String firstStringValue) { 
     this.firstStringValue = firstStringValue; 
    } 

    public String getSecondStringValue() { 
     return secondStringValue; 
    } 

    public void setSecondStringValue(String secondStringValue) { 
     this.secondStringValue = secondStringValue; 
    } 

    public Integer getIntegerValue() { 
     return integerValue; 
    } 

    public void setIntegerValue(Integer integerValue) { 
     this.integerValue = integerValue; 
    } 
} 

y luego usar List<ListWrapperClass>.

+1

Idealmente, por supuesto, esta clase tendría nombres significativos para sí misma y sus propiedades. – ColinD

+1

Sí, eso es cierto. Pero desafortunadamente eso no se especificó en la pregunta :) – Yrlec

+0

¿Por qué tiene los getters y setters? Agrega demasiado código innecesario. – jjnguy

1

Puede usar un List<Object> y luego emitir lo que recupere basándose en el índice, pero puede considerar la creación de una clase que contenga estas tres cosas.

+0

No recomiendo esta solución no genérica. – jjnguy

+1

¡Yo tampoco! :) Simplemente presentando otras alternativas. –

+0

Esto no parece ser la elección correcta porque los 3 valores no podrían todos compartir el mismo índice y, por lo tanto, no están relacionados entre ellos como deberían ser. Además, se debe evitar la falta de seguridad de tipo con 'List ' cuando sea posible. – ColinD

Cuestiones relacionadas