Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cuál es la manera más simple de invertir un ArrayList?

¿Cuál es la forma más sencilla de revertir este ArrayList?

ArrayList aList = new ArrayList(); //Add elements to ArrayList object aList.add("1"); aList.add("2"); aList.add("3"); aList.add("4"); aList.add("5"); while (aList.listIterator().hasPrevious()) Log.d("reverse", "" + aList.listIterator().previous()); 

  • Al extraer adt-bundle-windows-x86_64-20140702 este error de Windows 8
  • ¿Cuáles son las variables 'shadow $ _klass_' y 'shadow $ _monitor_' para java.lang.Object?
  • Cómo configurar gson para excluir 0 valores enteros
  • OutOfMemoryError crear bitmaps
  • Cómo almacenar Hashmap en Android para que se reutilice cuando la aplicación se reinicie con las preferencias compartidas?
  • Programación en la tableta Android
  • GetExternalFilesDir alternativa en android 2.1
  • El desbordamiento de barras de acción no se muestra
  • 6 Solutions collect form web for “¿Cuál es la manera más simple de invertir un ArrayList?”

     Collections.reverse(aList); 

    Ejemplo ( Referencia ):

     ArrayList aList = new ArrayList(); //Add elements to ArrayList object aList.add("1"); aList.add("2"); aList.add("3"); aList.add("4"); aList.add("5"); Collections.reverse(aList); System.out.println("After Reverse Order, ArrayList Contains : " + aList); 

    No es la forma más sencilla, pero si eres un fan de la recursión que podría estar interesado en el siguiente método para invertir una ArrayList:

     public ArrayList<Object> reverse(ArrayList<Object> list) { if(list.size() > 1) { Object value = list.remove(0); reverse(list); list.add(value); } return list; } 

    O no recursivamente:

     public ArrayList<Object> reverse(ArrayList<Object> list) { for(int i = 0, j = list.size() - 1; i < j; i++) { list.add(i, list.remove(j)); } return list; } 

    Solución sin usar ArrayList extra o combinación de métodos add () y remove (). Ambos pueden tener un impacto negativo si usted tiene que invertir una lista enorme.

      public ArrayList<Object> reverse(ArrayList<Object> list) { for (int i = 0; i < list.size() / 2; i++) { int temp = list.get(i); list.set(i, list.get(list.size() - i - 1)); list.set(list.size() - i - 1, temp); } 

    Un poco más legible 🙂

     public static <T> ArrayList<T> reverse(ArrayList<T> list) { int length = list.size(); ArrayList<T> result = new ArrayList<T>(length); for (int i = length - 1; i >= 0; i--) { result.add(list.get(i)); } return result; } 

    Otra solución recursiva

      public static String reverse(ArrayList<Float> list) { if (list.size() == 1) { return " " +list.get(0); } else { return " "+ list.remove(list.size() - 1) + reverse(list); } } 

    Sólo en caso de que estamos utilizando Java 8 , entonces podemos hacer uso de Stream. El ArrayList es una lista de acceso aleatorio y podemos obtener un flujo de elementos en orden inverso y luego recogerlo en un nuevo ArrayList .

     public static void main(String[] args) { ArrayList<String> someDummyList = getDummyList(); System.out.println(someDummyList); int size = someDummyList.size() - 1; ArrayList<String> someDummyListRev = IntStream.rangeClosed(0,size).mapToObj(i->someDummyList.get(size-i)).collect(Collectors.toCollection(ArrayList::new)); System.out.println(someDummyListRev); } private static ArrayList<String> getDummyList() { ArrayList dummyList = new ArrayList(); //Add elements to ArrayList object dummyList.add("A"); dummyList.add("B"); dummyList.add("C"); dummyList.add("D"); return dummyList; } 

    El enfoque anterior no es adecuado para LinkedList ya que no es de acceso aleatorio. También podemos hacer uso de instanceof para comprobar también.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.