java - tabla - ¿Cómo obtener el primer elemento de la Lista o Conjunto?
llenar tabla con una lista java (9)
Conjunto
set.toArray()[0];
Lista
list.get(0);
Me gustaría saber si puedo obtener el primer elemento de una lista o conjunto. ¿Qué método utilizar?
En Java> = 8 también puedes usar la API de transmisión:
Optional<String> first = set.stream().findFirst();
(Útil si el Conjunto / Lista puede estar vacío.)
Esta no es una respuesta exacta a esta pregunta, pero en caso de que los objetos se clasifiquen, SortedSet tiene un método first ():
SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"
Los objetos ordenados deben implementar la interfaz Comparable (como lo hace String)
Me sorprende que nadie haya sugerido aún una solución de guayaba:
com.google.common.collect.Iterables.get(collection, 0)
// or
com.google.common.collect.Iterables.get(collection, 0, defaultValue)
// or
com.google.common.collect.Iterables.getFirst(collection, defaultValue)
o si esperas elemento único:
com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)
Puede utilizar el método de obtención (índice) para acceder a un elemento desde una lista.
Los conjuntos, por definición, simplemente contienen elementos y no tienen un orden particular. Por lo tanto, no hay un "primer" elemento que pueda obtener, pero es posible recorrerlo con iterador (con el uso de cada bucle) o convertirlo en una matriz con el método toArray ().
Supongamos que tiene una List<String> strings
que quiere que aparezca el primer elemento.
Hay varias maneras de hacer eso:
Java (pre-8):
String firstElement = null;
if (!strings.isEmpty() && strings.size() > 0) {
firstElement = strings.get(0);
}
Java 8:
Optional<String> firstElement = strings.stream().findFirst();
Guayaba
String firstElement = Iterables.getFirst(strings, null);
Apache commons (4+)
String firstElement = (String) IteratorUtils.get(strings, 0);
Apache commons (antes de 4)
String firstElement = (String) CollectionUtils.get(strings, 0);
Seguido por o encapsulado dentro de los controles apropiados o bloques try-catch.
Kotlin:
En Kotlin, ambos Arrays y la mayoría de las Collections (por ejemplo: Lista) tienen una first
llamada de método. Así que tu código se vería algo como esto
para una lista:
val stringsList: List<String?> = listOf("a", "b", null)
val first: String? = stringsList.first()
para un Array:
val stringArray: Array<String?> = arrayOf("a", "b", null)
val first: String? = stringArray.first()
java8 y más
Set<String> set = new TreeSet<>();
set.add("2");
set.add("1");
set.add("3");
String first = set.stream().findFirst().get();
Esto le ayudará a recuperar el primer elemento de la lista o conjunto. Dado que el conjunto o la lista no está vacío ( get()
en vacío opcional lanzará java.util.NoSuchElementException
)
orElse()
se puede usar como: (esto es solo una orElse()
, no se recomienda)
String first = set.stream().findFirst().orElse("");
set.removeIf(String::isEmpty);
A continuación se muestra el enfoque apropiado:
Optional<String> firstString = set.stream().findFirst();
if(firstString.isPresent()){
String first = firstString.get();
}
Del mismo modo se puede recuperar el primer elemento de la lista.
Espero que esto ayude.
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(Esto es lo más cerca que estará de tener el "primer" elemento de un Set
. Debe darse cuenta de que no tiene absolutamente ningún significado para la mayoría de las implementaciones de Set
. Esto puede tener un significado para LinkedHashSet y TreeSet, pero no para HashSet).