Auto-test 3 Programación: Array, ArrayList, HashMap Licenciatura de Linguistica y Nuevas Tecnologias Instrucciones: Fecha limite para devolver el informe del auto-test: Viernes 30 de Mayo, 23h59. No se admitirán retrasos. El informe se mandará por mail con asunto “T3” y fichero adjuntado (.txt o .doc o .odt o .pdf) cuyo nombre es el NIA del estudiante, con las preguntas falladas y posibles dudas/preguntas. 1. ¿Qué es un array? a) Una secuencia de items de diferentes tipos. b) Un conjunto desordenado de items de diferentes tipos. c) Una secuencia de items del mismo tipo. d) Un conjunto desordenado de items del mismo tipo. 2. En Java, un array es: a) un objeto, que creamos al ejecutar, por ejemplo: String[ ] cadenas; b) un tipo básico, que creamos al ejecutar, por ejemplo: int[ ] enteros; c) un objeto, que creamos al ejecutar, por ejemplo: new String[10]; c) un tipo básico, que creamos al ejecutar, por ejemplo: new int[10]; 3.¿Qué ocurriría si escribimos esto en Java? a) Se imprimirá 50 por pantalla. int [ ] values; b) Se imprimirá NULL en pantalla. values[0] = 20; c) Se imprimirá 20 por pantalla. values[1] = 30; d) values apunta a null y no se puede System.out.println(values[1] + values[0]); introducir ningún dato en su interior, por lo que no llegará ni a compilar. 4. ¿Qué resultado dará este código? a) Nos imprimirá eva, cristina y sergi. String[] alumnos = new String[10]; b) No imprimirá nada, ya que alumnos.length no alumnos[0] = "eva"; está inicializado. alumnos[1] = new String("cristina"); c) Imprimirá 10 elementos, los cuatro alumnos[2] = "sergi"; primeros serán eva, cristina, sergi y teresa, alumnos[3] = new String("teresa"); y los siguientes serán null, ya que no for (int i=0;i<alumnos.length;i++) contienen nada. System.out.println("Element " + i + " is " + d) Imprimirá 10 elementos, con los cuatro alumnos[i]); nombres repetidos hasta llegar al final del estilo: eva, cristina, sergi, teresa, eva, cristina, sergi, teresa, eva, cristina. 5. ¿Es correcto éste código?. a) Sí, y creará un array con tres elementos String[ ] nicks = {"binary", "sedicivalvole", “carabel”}; que podrá ser mostrado sin problemas si queremos. b) No, ya que no hemos creado el objeto con new. c) Sí, pero creará un único String con contenido: binarysedicivalvolecarabel (todo junto). d) No, nicks tendrá contenido nulo, y no se creará con los valores que esperábamos (binary, sedicivalvole, carabel). 6. ¿Es posible crear un array con objetos que a) No, dado que el tipo array sólo permite pertenezcan a una clase propia? o sea, en lugar de utilizar tipos ya definidos en el lenguaje de utilizar tipos como String, Integer, int, float, utilicemos Java. nuestra propia clase b) No, porque acabaríamos teniendo un array sin contenido que mostrar. c) Sí, pero no podremos mostrarlo ni acceder a los datos de la clase. d) Sí, y además se inicializa de la siguiente manera (siendo Socio una clase definida y con 4 parámetros en el constructor): Socio[] socios = new Socio[2]; socios[0] = new Socio("jordi","binary", 2, 5); socios[1] = new Socio("miguel","macs", 2, 5); 7. Con este código: a) El contenido del array será finalmente: int uno_diez = {1, 2, 3, 4, 5, 6, 7} {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; uno_diez[7] = 8; b) El contenido del array será uno_diez[8] = 9; {8, 9, 10} uno_diez[9] = 10; c) Los arrays no pueden cambiar de longitud y nos dará error. d) El contenido del array será: {1, 2, 3, 4, 5, 6, 7} 8. Este otro código: int numeros = {1, 2, 3}; numeros[0] = 4; numeros[2] = numeros[0] + numeros[1]; 9. alumnos.length es: a) numeros[2] contendrá el número 6. b) numeros[2] contendrá 3 c) Dará error a) una variable que permite acceder al tamaño actual del array. b) una variable que permite acceder al tamaño máximo del array. c) un método que devuelve el tamaño actual del array. d) un método que devuelve el tamaño máximo del array. 10. ¿Cual de estas afirmaciones sobre un ArrayList a) Su tamaño cambia de forma dinámica. es falsa? b) Puede contener elementos de cualquier tipo objeto. c) Puede contener elementos de cualquier tipo, objeto o básico. d) Se puede recoger y añadir un elemento con los método get y add respectivamente. 11. ¿Cual de estas afirmaciones sobre el objeto de a) Permite recorrer un ArrayList y evitar así tipo Iterator es falsa? manipular los índices de forma explicita b) Es la única manera de recorrer un ArrayList c) Solo se puede utilizar una vez para recorrer un ArrayList. Para recorrer el ArrayList otra vez, hay que crear un nuevo Iterator. d) Pertenece al paquete estándar java.util. 12. ¿Cual de estas afirmaciones sobre HashMap es a) Lo que es único son las parejas <clave, correcta? Se dice que un HashMap es un conjunto valor>, clave y valor pueden ser duplicados. de asociaciones <clave, valor>: b) Lo que es único son los valores. c) Una misma clave puede tener más de un valor. d) Las claves son únicas. 13. Este código a) No funcionará, dado que Integer, null, HashMap hashmap = new HashMap(); “THREE” y Float son tipos distintos de datos. b) Nos creará una HashMap con tres asociaciones <clave,valor>, ya que la hashmap.put("one",new Integer(1)); asociación con clave “three” se sobrehashmap.put("two",null); escribe. hashmap.put("three","THREE"); c) Nos creará un HashMap con cuatro hashmap.put("three",new Float(4)); asociaciones <clave,valor>, ya que los valores con clave “three” son de tipo distinto. d) Nos creará una HashMap con tres asociaciones <clave,valor>, ya que “two” tiene como valor null. 14. Para recorrer un HashMap: a) Podemos recorrerlo de forma secuencial, usando índices. b) Tenemos que recuperar el conjunto de valores del HashMap, y, recorriendo este conjunto valor por valor, acceder de esta forma a cada asociación <clave,valor> del HashMap. c) Tenemos que recuperar el conjunto de claves del HashMap, y, recorriendo este conjunto clave por clave, acceder de esta forma a cada asociación <clave,valor> del HashMap. d) Podemos recorrerlo de forma secuencial, usando un iterator. 15. Asumiendo que print es un método que imprime a) Se imprime: un array de int pasado como argumento de entrada, 1 2 3 4 5 ¿qué pasa al ejecutar este código?: 23456 b) Se imprime: public static void main(String[ ] args) { 12345 12345 int[ ] array1 = {1,2,3,4,5}; c) Se imprime: int[ ] array2 = doSomething(array1); 23456 23456 print(array1); d) Se imprime: print(array2); 23456 12345 } public static int[ ] doSomething(int[ ] values) { for (int i=0;i<values.length;i++) { values[i]++; } return values; }