Obtener posiciones antiguas de elementos de ArrayList en Android
Frecuentes
Visto 1,085 veces
1
Tengo un ArrayList llamado play_viewCount
: Estoy ordenando este ArrryList y almacenándolo en un nuevo ArrayList.
Ahora he ordenado ArrayList: pero lo que quiero es antes de ordenar, ¿cuál era la posición de los nuevos elementos en ArrayList?
ArrayList<String> sort_play_viewCount = play_ViewCount; // here play_viewCount is ArrayList
ArrayList<Integer> position_array = new ArrayList<Integer>();
System.out.println("......................................... Play Count :"+sort_play_viewCount);
Collections.sort(sort_play_viewCount);
System.out.println(".........................................sort Play Count :"+sort_play_viewCount);
for(int j = 0; j<sort_play_viewCount.size(); j++){
for(int k = 0; k<sort_play_viewCount.size(); k++){
if(play_ViewCount.contains(sort_play_viewCount.get(j))){
position_array.add(k);
}
}
}
System.out.println(" .................Position Array: "+position_array);
¿Alguien sabe cómo obtener las posiciones de los nuevos elementos antes de clasificarlos?
2 Respuestas
5
Intenta hacerlo un poco diferente:
ArrayList<Integer> position_array = new ArrayList<Integer>();
position_array.addAll(play_viewCount);
Collections.sort(position_array);
Actualmente position_array
está ordenado, y para obtener las posiciones anteriores, simplemente puede llamar play_viewCount.indexOf(value);
contestado el 22 de mayo de 12 a las 15:05
2
Puedes poner los elementos del ArrayList
en un Map<String, Integer>
(implementado por un HashMap<String, Integer>
), donde la clave de una entrada es String
elemento del ArrayList
y el valor es Integer
representando el puesto.
Map<String, Integer> originalPositions = new HashMap<String, Integer>();
String item = ...
String position = ...
originalPositions.put(item, position);
// do something with the ArrayList, such as sorting
Collections.sort(arrayList);
String someItem = arrayList.get(i);
int originalPosition = originalPositions.get(someItem);
Y, por cierto, esta línea de tu fragmento de código no hace lo que crees que hace.:
ArrayList<String> sort_play_viewCount = play_ViewCount;
No crea una nueva ArrayList con el mismo contenido que la original. En su lugar, simplemente crea una nueva referencia al ArrayList original. Ambos play_ViewCount
y sort_play_viewCount
se refieren al mismo objeto, en otras palabras, cualquier cambio en una de las variables (como la clasificación) también afecta a la otra.
Para crear una nueva copia (sin embargo, todavía es superficial) de un ArrayList
, usa el siguiente modismo:
ArrayList<Integer> original = ...
ArrayList<Integer> copy = new ArrayList<Integer>(original);
contestado el 22 de mayo de 12 a las 16:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java android or haz tu propia pregunta.