Obtener valor de ArrayList <NameValuePair> por nombre

¿Es una manera correcta de obtener el valor de ArrayList<NameValuePair> por nombre?

 private String getValueByKey(ArrayList<NameValuePair> _list, String key) { for(NameValuePair nvPair : _list) { if(nvPair.getName().equals(key)) { return nvPair.getValue().toString(); } } return null; } 

O, ¿hay un acceso directo para acceder al valor de ArrayList<NameValuePair> por nombre?

No – los almacena como una lista, que no está diseñada para ser accedida por "clave" – ​​no tiene ninguna noción de una clave.

Parece que realmente quieres algo como un Map<String, String> – asumiendo que solo necesitas almacenar un solo valor para cada clave.

Si estás atascado con la ArrayList (y al menos cambiaría el tipo de parámetro a List , si no es Iterable dado que eso es todo lo que necesitas) entonces lo que tienes está bien.

Parece que usted necesita otra estructura de datos. Por ejemplo Map<Name, Value> o Map<Name, NameValuePair> si lo desea.

La primera solución es probablemente más correcta, la segunda es más fácil de implementar si ya tiene código que utiliza el hecho de que los pares se almacenan en la lista. Mapa permite obtener colección de valores; Collection es una interfaz estupenda de la List .

Si puede utilizar un Map lugar, funcionan de esta manera:

 Map<String,String> myMap = new HashMap<>(); myMap.put("key1","value1"); myMap.put("key2","value2"); myMap.put("key3","value3"); String str = myMap.get("key1"); //equivalent to your String str = getValueByKey(myList,"key1"); 

Con un HashMap las claves no se almacenan como una lista, por lo que será más rápido y no tendrá que utilizar una función para iterar el contenedor.

A continuación, puede acceder a todos los valores con myMap.keySet() y myMap.values() , consulte la documentación .

Si su clave o nombre es un entero, le sugiero que utilice un SparseArray en SparseArray lugar: http://developer.android.com/reference/android/util/SparseArray.html

A continuación, puede utilizar diferentes funciones para recuperar los valores que desee utilizando la clave, el valor o el índice de la matriz.

  • Mostrar información basada en el botón que se pulsó
  • ¿Cómo instalar Google Play Services en el dispositivo Genymotion 6.0?
  • ¿Cómo puedo utilizar el código BitmapRegionDecoder en android 2.2.2 (Froyo)?
  • Cómo rotar un RelativeLayout por 180 grados?
  • Varias etiquetas de raíz en Android Studio
  • Error: No se encontró com.google.gms: google-services: 1.0. Al agregar el plugin de servicio de google en build.gradle en android studio
  • ¿Los campos de lectura de un objeto Realm son más lentos que los objetos java?
  • Dispositivo de par en bluetooth android
  • Android: Carga de una foto en Cloudinary con devolución de llamada de progreso en HttpURLConnection
  • Por qué el archivo JAR compilado por Java SE, capaz de ejecutarse en Android
  • Cómo girar cuatro sprites al foco de estos sprites
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.