He utilizado Collections.sort(playersList);
para ordenar un List
. Entonces, creo que playersList
está ordenado ahora. ¿Pero cómo puedo obtener el primer elemento de la lista? playersList[0]
no funciona.¿Cómo puedo obtener un primer elemento de una lista ordenada?
Respuesta
playersList.get(0)
Java tiene un polimorfismo de operador limitado. Así que utilizar el método get()
en List
objetos, no el operador de índice de matriz ([]
)
Usted tiene que acceder a las listas de manera diferente que los arrays en Java. Consulte javadocs para la interfaz List
para obtener más información.
playersList.get(0)
Sin embargo, si usted quiere encontrar el elemento más pequeño en playersList
, no se debe solucionar el problema y luego obtener el primer elemento. Esto funciona muy lentamente en comparación con solo buscar una vez en la lista para encontrar el elemento más pequeño.
Por ejemplo:
int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
El código anterior se encuentra el elemento más pequeño en vez de O(n)
O(n log n)
tiempo.
Eso depende de lo que escriba su lista es, por ArrayList
uso:
list.get(0);
para LinkedList
uso:
list.getFirst();
si te gusta el array
enfoque:
list.toArray()[0];
mal consejo. LinkedList implementa la interfaz List, no es necesario utilizar un método especial (y me sorprendería que hubiera alguna diferencia de rendimiento entre los dos). Y llamar a Array() es un desperdicio: ¡podría estar asignando la lista a una nueva matriz sin ningún motivo! – Kip
@Kip, observación extraña; la clase LinkedList no implementa los primeros y los últimos métodos por despecho. Si tiene una buena razón para utilizar LinkedList, no debe abstenerse de utilizar sus métodos simplemente porque no están en la interfaz de la Lista. El ejemplo de matriz puede ser útil si la lista en sí misma no es necesaria después de la clasificación, y más cercana a lo que OP solicitó. Sin conocer el contexto del código fuente en cuestión, no puede determinar la validez del consejo. – rsp
¿por qué importaría si necesita o no la lista después de ordenar? en cualquier caso (o incluso si la lista nunca se ordena) llamando a Array() solo para obtener el primer elemento (puede) crear innecesariamente una matriz completa. – Kip
Matthew's answer es correcto:
list.get(0);
Para hacer lo que ha intentado:
list[0];
que tendrá que esperar hasta Java 7 is released:
devoxx conference http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
Aquí hay una interesante presentation por Mark Reinhold sobre Java 7
Parece parle ys sitio está actualmente abajo, intente más tarde :(
Esto no parece haber llegado realmente a Java 7 – Gunner
Si su colección no es un List
(y por lo tanto no se puede utilizar get(int index)
), entonces usted puede utilizar el iterador:
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
Si sólo que desee obtener el mínimo de una lista, en lugar de clasificarlos y luego conseguir el primer elemento (O(N log N)
), puede utilizar lo haga en un tiempo lineal utilizando min
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
que se ve retorcido en f primero, pero mirando sus preguntas anteriores, tiene un List<String>
. En resumen: min
funciona en él.
Para la respuesta larga: todo lo que super
y extends
cosas en las restricciones de tipo genérico es lo que Josh Bloch llama el principio de PECS (por lo general se presenta junto a una imagen de Arnold - No es broma!)
Productor Extiende, Súper Consumidor
En esencia, hace que los genéricos más potente, ya que las limitaciones son más flexibles al mismo tiempo conservar la seguridad de tipos (ver: what is the difference between ‘super’ and ‘extends’ in Java Generics)
Usando las secuencias Java 8, puede convertir su lista en una secuencia y obtener el primer elemento en una lista usando el método .findFirst()
.
List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"
El método .findFirst()
devolverá un Optional que pueden o no contener un valor de cadena (puede que no contiene un valor si el usuario está vacía stringsList
).
Luego, para desenvolver el artículo del Opcional, utilice el método .get()
.
- 1. C# Lista ordenada: ¿cómo obtener el siguiente elemento?
- 2. Obtener el primer elemento de una lista idiomáticamente en maravilloso
- 3. ¿Cómo puedo obtener el primer elemento en un NSDictionary?
- 4. Django plantillas primer elemento de una lista
- 5. Lista <> Obtener elemento siguiente u obtener el primer
- 6. ¿Cómo aleatorizar una lista ordenada?
- 7. ¿Cómo obtener el primer elemento de IEnumerable
- 8. ¿Cómo elimino el primer elemento de una lista de Python?
- 9. ¿Cómo puedo conservar una lista ordenada en Core Data
- 10. ¿Cómo puedo obtener el primer elemento después de un elemento con LINQ-to-XML?
- 11. ¿Cómo puedo verificar si una lista está ordenada?
- 12. ¿Cómo eliminar el primer y último elemento de una lista?
- 13. ¿Manera eficiente de obtener el primer elemento que falta en la secuencia ordenada?
- 14. ¿Cómo obtener el primer elemento en una cadena?
- 15. ¿Cómo obtener el primer elemento de una matriz PHP asociativa?
- 16. WPF mantiene una lista de TreeView ordenada
- 17. Cómo obtener el primer elemento de un estándar :: conjunto
- 18. Cómo obtener el primer elemento interior?
- 19. Obtener el primer elemento de una matriz de JavaScript dispersa
- 20. ¿Buscar en una lista ordenada?
- 21. Obtenga sumas ordenadas de una lista ordenada
- 22. Creación de una lista ordenada al azar de una lista ordenada
- 23. ¿Cómo puedo obtener un puntero al primer elemento en un std :: vector?
- 24. ¿Cómo puedo eliminar un elemento de una lista?
- 25. asp.net: ¿Cómo puedo eliminar un elemento de una lista desplegable?
- 26. Conseguir el primer elemento de una lista x
- 27. ¿Puedo mapear el primer elemento de un par sin flechas?
- 28. Transformar sólo el primer elemento de una lista Scala
- 29. Omitir el primer elemento en la lista
- 30. ¿Cómo crear una lista ordenada centrada con HTML/CSS?
Me pregunto por qué debería programarse una operación tan básica. ¿Por qué Java no proporciona una función que devuelve solo un valor mínimo de la matriz? – Roman
Roman, existe tal método, Collections.min (http://java.sun.com/javase/7/docs/api/java/util/Collections.html#min%28java.util.Collection%29). –