Java – Nivel 3 – Test 9
Tests similares
Respuestas:
1. ¿Cuál es la salida del siguiente código?
List words = Arrays.asList(«apple», «banana», «cherry»);
Map<Integer, List> result = words.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(result);
- Respuesta Correcta:
{5=[apple], 6=[banana, cherry]} - Explicación:
- El método groupingBy(String::length) agrupa las palabras según su longitud:
- Longitud 555: [apple].
- Longitud 666: [banana, cherry].
- Resultado: un mapa con claves que representan las longitudes y valores que son listas de palabras con esa longitud.
- El método groupingBy(String::length) agrupa las palabras según su longitud:
2. ¿Qué interfaz funcional se utiliza para representar una operación que acepta dos argumentos y no devuelve ningún resultado?
- Respuesta Correcta:
BiConsumer - Explicación:
- BiConsumer<T, U> define una operación que toma dos argumentos TTT y UUU y no devuelve un resultado. Es útil para operaciones como agregar elementos a estructuras de datos.
3. ¿Qué hace el método distinct() en un Stream?
- Respuesta Correcta:
Elimina elementos duplicados del stream - Explicación:
- El método distinct() utiliza la igualdad definida por equals() para eliminar duplicados en un flujo de datos.
4. ¿Qué método se usa para crear una copia de un array en Java?
- Respuesta Correcta:
Arrays.copyOf() - Explicación:
- Arrays.copyOf() crea una nueva copia de un array con la longitud especificada. Es simple y eficiente.
5. ¿Qué imprimirá el siguiente código?
int a = 10, b = 5;
System.out.println((a++ > 10 ? b– : ++b) + a);
- Respuesta Correcta:
17 - Explicación:
- a++ > 10: 10>1010 > 1010>10 es falso, por lo que se evalúa ++b, incrementando bbb a 666.
- Luego de la operación ternaria, a=11a = 11a=11 debido al post-incremento.
- Resultado: 6+11=176 + 11 = 176+11=17.
6. ¿Qué hace el método computeIfPresent() en un Map?
- Respuesta Correcta:
Calcula un nuevo valor si la clave existe - Explicación:
- computeIfPresent() aplica una función a la clave existente para calcular un nuevo valor y lo actualiza en el mapa.
7. ¿Cuál es el resultado de la siguiente operación?
(15 & 9) ^ (8 | 1)
- Respuesta Correcta:
6 - Explicación:
- 15=111115 = 111115=1111, 9=10019 = 10019=1001, 8=10008 = 10008=1000, 1=00011 = 00011=0001.
- 15&9=1001=915 \& 9 = 1001 = 915&9=1001=9.
- 8∣1=1001=98 | 1 = 1001 = 98∣1=1001=9.
- 9⊕9=0110=69 \oplus 9 = 0110 = 69⊕9=0110=6.
8. ¿Cuál es la salida del siguiente código?
String str = «Hello»;
System.out.println(str.chars().mapToObj(ch -> (char)ch).sorted(Comparator.reverseOrder()).collect(Collectors.joining()));
- Respuesta Correcta:
ollHe - Explicación:
- str.chars() convierte la cadena en un flujo de códigos Unicode.
- mapToObj(ch -> (char)ch) convierte cada código Unicode en un carácter.
- sorted(Comparator.reverseOrder()) ordena los caracteres en orden inverso: o,l,l,H,eo, l, l, H, eo,l,l,H,e.
- Collectors.joining() concatena los caracteres en una cadena: ollHe.
9. ¿Cuál es el resultado de Math.log(Math.exp(2)) + Math.cos(Math.PI)?
- Respuesta Correcta:
1 - Explicación:
- Math.log(Math.exp(2))=2Math.log(Math.exp(2)) = 2Math.log(Math.exp(2))=2, porque el logaritmo natural y la exponencial son operaciones inversas.
- Math.cos(Math.PI)=−1Math.cos(Math.PI) = -1Math.cos(Math.PI)=−1, porque el coseno de 180°180°180° es −1-1−1.
- Resultado: 2+(−1)=12 + (-1) = 12+(−1)=1.
10. ¿Cuál es el resultado de la siguiente expresión?
IntStream.rangeClosed(1, 5).mapToObj(i -> i * i).collect(Collectors.toCollection(LinkedHashSet::new));
- Respuesta Correcta:
{1, 4, 9, 16, 25} - Explicación:
- IntStream.rangeClosed(1, 5) genera los números del 1 al 5: [1,2,3,4,5][1, 2, 3, 4, 5][1,2,3,4,5].
- mapToObj(i -> i * i) transforma cada número en su cuadrado: [1,4,9,16,25][1, 4, 9, 16, 25][1,4,9,16,25].
- Collectors.toCollection(LinkedHashSet::new) almacena los resultados en un LinkedHashSet, que conserva el orden de inserción.
- Resultado: {1, 4, 9, 16, 25}.