2012-01-25 12 views
45

Tengo un List de HashMap así que estoy usando List.contains para averiguar si la lista contiene un determinado HashMap. En caso de que lo haga, quiero obtener ese elemento de la lista, entonces ¿cómo averiguo la posición del índice de dónde está el elemento?Como encontrar la posición de índice de un elemento en una lista cuando contiene retornos verdaderos

List benefit = new ArrayList(); 
    HashMap map = new HashMap(); 
    map.put("one", "1"); 
    benefit.add(map); 
    HashMap map4 = new HashMap(); 
    map4.put("one", "1"); 

    System.out.println("size: " + benefit.size()); 
    System.out.println("does it contain orig: " + benefit.contains(map)); 
    System.out.println("does it contain new: " + benefit.contains(map4)); 

    if (benefit.contains(map4)) 
     //how to get index position where map4 was found in benefit list? 

Respuesta

84

¿Qué pasa con:

benefit.indexOf(map4) 

? Devuelve un índice o -1 si los elementos no se encuentran.

BTW I fuertemente recomendamos envolver el mapa en algún objeto y usar genéricos si es posible.

+0

Sólo un pequeño comentario, en un código de cuello de botella, se recomienda ejecutar la búsqueda de listas solo una vez: 'int pos = list.indexOf (item); if (pos> = 0) {/ * hazlo * /} '. –

5

Use List.indexOf(). Esto le dará la primera coincidencia cuando haya múltiples duplicados.

+0

¿qué pasa con un ejemplo? cómo usar indexOf? – teutara

1

int indexOf(Object o) Este método devuelve el índice en esta lista de la primera aparición del elemento especificado, o -1 si esta lista no contiene este elemento.

4

Aquí se muestra un ejemplo:

List<String> names; 
names.add("toto"); 
names.add("Lala"); 
names.add("papa"); 
int index = names.indexOf("papa"); // index = 2 
Cuestiones relacionadas