Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NikNitro! en 19 Diciembre 2013, 22:52 pm



Título: Método que "puede o no" devolver un entero
Publicado por: NikNitro! en 19 Diciembre 2013, 22:52 pm
Buenas. Me encuentro implementando una tabla hash  y  el método int searchIdx(K key) debería devolver o null si el elemento no está, o el hash de la key. La duda es que no se que poner. Se que en Haskell se puede poner (algo así, no estoy seguro del todo, tendría que mirarlo para confirmarlo) como data res = nothing | integer

El código es el siguiente:

Código:
public class LinearProbingHashTable<K,V> implements HashTable<K,V>{

private K keys[];
private V values[];
private int size;
private double maxLoadFactor;
...
...
       /**
* Takes key of association and returns
* its insertion position in the table.
         * Collisions must be resolved using linear probing algorithm)
*/
private int searchIdx(K key) {
// to be completed
int idx = hash(key);
while(!(keys[idx] == null)) {
if(keys[idx] == key){
return idx;
} else {
idx++;
}
}
return null;
}

por supuesto me da error en el return null pues me dice que éste no es un entero... ¿Qué debo hacer?

Gracias ;)


Título: Re: Método que "puede o no" devolver un entero
Publicado por: ThinkByYourself en 19 Diciembre 2013, 23:31 pm
En lugar de int pones Integer y no problemo


Título: Re: Método que "puede o no" devolver un entero
Publicado por: dainodaibouken en 19 Diciembre 2013, 23:45 pm
por que no intentas con un parsing


Título: Re: Método que "puede o no" devolver un entero
Publicado por: Mitsu en 20 Diciembre 2013, 13:41 pm
Según lo que recuerdo, un HashMap o en su versión antigua un HashTable (deprecated) no podía tomar un key value null. Ya que null no es un objeto, ¿cómo podrías llamar a equals(Object o) o a hashCode()?

No utilices HashTable, utiliza HashMap y ten en cuenta que por cuestión de buena programación y estructura, una key no puede ser null.


Título: Re: Método que "puede o no" devolver un entero
Publicado por: Nasty35 en 21 Diciembre 2013, 15:56 pm
Haces un return 0, y con un if compruebas que si retorna 0, es por un error (y lo manejas).


Título: Re: Método que "puede o no" devolver un entero
Publicado por: NikNitro! en 22 Diciembre 2013, 16:01 pm
Resulta que lo estaba planteando mal. Ese método debe devolver el índice en el que debería estar la key... Esté ella o no, asi que devuelve siempre un número positivo ;)

Salud

PD: Si quereis algo del código pedidmelo ;)


Título: Re: Método que "puede o no" devolver un entero
Publicado por: ~ Yoya ~ en 22 Diciembre 2013, 22:43 pm
No puedes devolver un null en un método que retorna un valor de tipo primitivo, por eso el error.

En este caso debes utilizar un Wrapper class como ha dicho @NoBullshit, o retornar un 0 pero en ese caso quizás deberías modificar algunas lineas de código para que funciona.

Saludos.