bruceramone 17 de fev. de 2009
Que tal um array de dois elementos?
rodpuc 17 de fev. de 2009
n me parece mto elegante…
Tchello 17 de fev. de 2009
Quital um objeto com esses dois elementos? =P
dionat4n 17 de fev. de 2009
Depende do escopo.
Geralmente, a solução mais elegante é criar uma classe Listas que encapsula as duas listas:
private Map < Etapa , Listas > a ;
Lavieri 17 de fev. de 2009
se não existir relação entre as 2 listas, o melhor, na minha opinião, é criar um objeto com as dua listas
public class ListaDupla {
private final List < String > lista1 ;
private final List < String > lista2 ;
public ListaDupla ( List < String > lista1 , List < String > lista2 ) {
this .lista1 = lista1 ;
this .lista2 = lista2 ;
}
public List < String > getLista1 () {
return lista1 ;
}
public List < String > getLista2 () {
return lista2 ;
}
}
ai vc faria o map assim
private Map<Etapa, ListaDupla> a;
//podendo fazer
a.get(key).getLista1();
//ou
a.get(key).getLista2();
alem disso pode criar outras funcionalidades em Lista Dupla, como contains etc etc etc
thingol 17 de fev. de 2009
Em muitos programas que escrevo (devido à influência de linguagens como o C++ e o Scala) eu costumo criar uma classe assim:
class Pair <T, U> {
public T first ;
public U second ;
public Pair (T first_ , U second_ ) { first = first_ ; second = second_ ; }
}
e depois eu uso como se fosse essa classe do g4j. Por exemplo, seu problema original ficaria:
private Map < Etapa , Pair < List < String > , List < String > > a ;
Marcelo_FS 18 de fev. de 2009
Se eu não me engano, o Commons Collections tem uma classe que cria um Map<Object, List<?>> e abstrai isso pra você. Ou seja, quando você adiciona um elemento em determinada chave, ele adiciona esse elemento em uma lista interna... o quê permite ter vários elementos por chave. Quando você dá um get(key), ele retorna um List<?> com os objetos que vc adicionou.
Você ficaria com algo como um Map<Object, List<List>>