elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16
11  Programación / Java / Re: Saber si un array contiene un objeto propio en: 7 Mayo 2017, 07:10 am
Hola:

Para convertir a List y usar el metodo indexOf, puedes usar la clase Arrays de java

java.util.Arrays.asList(theArray).indexOf(o)

También hay que decirle a java de alguna forma cuando dos objetos de tu clase son iguales. Si no dices nada, por defecto serán iguales si son la misma instancia y serán distintos si son instancias distintas, aunque el contenido sea igual.

Código:
TuClase a = new TuClase(1,2,3)
TuClase b = new TuClase(1,2,3)
// a == b es false y a.equals(b) también es false.

Para indicar cuando son iguales, debes definir el método equals() en tu clase (el mismo IDE que uses eclipse, netbeans, idea, .... lo hacen si se lo pides).

Saludos.
12  Programación / Java / Re: Código JAVA para ingresar datos por teclado da error. en: 6 Mayo 2017, 12:10 pm
Hola:

En ideone.com hay un botón stdin donde tienes que poner la entrada de teclado por adelantado. He probado a poner ahí varios números separados por retornos de carro y lee el primero, pero luego da error.
He conseguido arreglarlo poneindo la linea
Código:
Scanner teclado = new Scanner(System.in);
fuera del bucle, así

Código:
import java.util.Scanner;

class Actividad2 {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        for (int a = 0; a < 2; a++){
            System.out.println ("Ingrese número de empleado, nombre completo y su curp");
            String nombre = "";
      
            nombre = teclado.nextLine();
            System.out.println( "Hola, " + nombre);
        }
    }
 }

Realmente no es necesario declarar/crear un Scanner en cada iteración del bucle, basta con tener uno fuera y reutilizarlo todo lo que sea necesario.

Saludos.
13  Programación / Java / Re: [Problema]Mejor manera de copiar archivos en: 31 Marzo 2017, 18:51 pm
Prefiero que pongas las dudas en el foro, así puede participar mas gente :)

Saludos.
14  Programación / Java / Re: [Problema]Mejor manera de copiar archivos en: 30 Marzo 2017, 22:09 pm
Hola:

La primera opción es la más ineficiente. Siempre es más eficiente leer/escribir muchos bytes en disco de golpe que de uno en uno. Podrías hacerla más eficiente usando métodos de leer/escribir arrays de byte[] de tamaños más o menos grande. Las clases BufferedInputStream, BufferedReader, o BufferedOutputStream, BufferedWriter se encargan automáticamente de coger bloques de bytes enteros de disco en memoria y dártelos según los pidas.

Entre las otras opciones, no podría decirte cual es más eficiente, puesto que depende de cómo la hayan implementado por debajo (transfer, copy de windows, Files.copy), pero imagino que cualquiera de ellas vale, si nos fiamos de los que lo han implementado por debajo.

Otro detalle a tener en cuenta. Si son muuuuchos ficheros, windows es más eficiente haciendo un zip con todos ellos y transfiriendo ese único fichero que hacer la transferencia de los ficheros por separado. Puedes probarlo rápidamente sin hacer ningún programa, basta con hacer la prueba arrastrando los ficheros (bien el zip, bien el directorio que contenga la multitud de ficheros) en el explorador de windows y ver el resultado. Tendrías que ver lo que cuesta hacer el zip, pero según cuántos ficheros sean, en general compensa (nunca lo he hecho con 80TB, no sé que puede tardar un zip de eso o si lo aguanta siquiera, pero puedes probar a hacer varios zip más pequeños en vez de uno grande).

Saludos.
15  Programación / Java / Re: hashmap o hashtable que es mejor? en: 24 Agosto 2016, 22:15 pm
:)

Se bueno.
16  Programación / Java / Re: hashmap o hashtable que es mejor? en: 23 Agosto 2016, 21:25 pm
Hola:

http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable

En tu caso no parece que vayas a usar hilos, así que en principio es mejor Hashmap.

Se bueno.
17  Programación / Java / Re: Duda getters en: 20 Agosto 2016, 16:39 pm
Hola:

En tu pregunta original, no hay ninguna diferencia entre toString() y getName(), ambos devuelven el atributo name de la clase. En el ejemplo que pones, el this. es opcional, lo pongas o no, se referencia a name de la clase.

Si hubiera otra variable name accesible a los métodos, entonces igual sí es necesario poner this para distiguiir cual quieres usar. Por ejemplo, en un setter, puedes poner

Código:
public class UnaClase {
   ...
   private String name;
   ...
   public void setName (String name) {
      this.name = name;
   }
}

Hay dos name accesibles, el atributo de la clase y la varialble del parámetro. La variable del parámetro "oculta" a la de la clase, por lo que poner sólo name, referencia a la del parámetro. Si quieres usar el atributo de la clase, aquí sí es obligatorio usar this.name, porque si no, referenciarias al parámetro.

No hay variables globales en java, así que name a secas no referencia a una variable global.

Se bueno.
18  Programación / Java / Re: obtener datos de una lista? en: 6 Marzo 2016, 21:39 pm
Hola:

Persona p = Personas.get(0);

Eso te devuelve la primera persona de la lista. Personas.size() te dice cuántas hay. No debería ser complicado hacer un bucle o lo que necesites.

Se bueno.
19  Programación / Java / Re: Interfaces en Java en: 13 Enero 2016, 21:46 pm
Hola:

Como bien dices, no es cómodo hacer interfaces y hacer que las clases implementen las interfaces. Por eso no hay que hacerlo siempre, sólo cuando sea necesario o preveas que va a ser necesario. ¿Y cuando es necesario?  Pues hay muchos ocasiones en que son necesarias, pero básicamente se puede reducir a un único motivo: que vas a llamar a un método que preveas que puede cambiar en algún momento. Me explico.

Imagina que tienes una clase con un método print(texto) que saca el texto por pantalla, algo tan tonto como esto

Código:
public class UnaClase {
   public void print(String texto) {
        System.out.println(texto);
   }
}

Todo bien hasta ahora, no es necesario interface ni nada. Pero mientras haces el programa resulta que piensas que quizás más adelante necesites sacar el texto por la impresora, tendrías que cambiar el método por algo asi

Código:
public class UnaClase {
   public void print(String texto) {
        // lo que sea que haya que hacer en java para sacar el texto por impresora.
   }
}

pues bien, si en tu programa a veces quieres sacar el texto por impresora, a veces por pantalla, es cuando una interface puede ayudarte. Haz dos clases, una para impresora, otra para pantalla, que implementen ambas una misma interface con el metodo print(texto). Luego, puedes hacer cosas como esta

Código:
public void unMetodo(LaInterface laInterface) {
   // aqui el codigo que calcule el texto que quieras sacar por pantalla/imprimir
   laInteface.print(texto);
}

¿qué hace ese código? ¿saca por pantalla o imprime en la impresora?. Pues depende de la clase concreta que le pases al llamar al metodo

Código:
a.unMetodo(new ClaseQueImprime());
a.unMetodo(new ClaseQueSacaPorPantalla());

y si mas adelante quieres guardar ese texto en base de datos, te bastaría una tercera clase que implemente la interface y solo tienes que pasarsela al metodo. has conseguido un método (trozo de código) que puede sacar por pantalla, imprimir o meter en base de datos  sin necesidad de retocarlo.

Resumiendo, una interface tiene sentido cuando preveas al menos dos clases distintas que la van a implementar y que vas a querer poder intercambiar una por otra de forma transparente, sin tocar codigo.

En java encontrarás muchos ejemplo. Por ejemplo, ¿qué hace un JButton de java cuando lo pulsas?. Nada, solo llamar al método actionPerformed() de la interface ActionListener que se le pase en el metodo addActionListener()

Código:
unJButton.addActionListener(unaClaseQueImplementaActionListener);

los de java han conseguido hacer un JButton que hace lo que el programador quiera que haga sin necesidad de recompilar el Jbutton cada vez y sin saber siquiera cómo se llama la clase java que el programador va a realizar.

Se bueno.
20  Programación / Java / Re: Ayuda con JFrame y Tratamiento de imagen JAVA en: 7 Enero 2016, 23:03 pm
Hola:

En java hay un hilo llamado EDT (Event Dispatch Thread) que es el encargado de atender eventos de ratón (click en botones) y de pintar ventanas. Si con un evento de ratón tardas mucho (tu método actionPerformed()), no se repintará ninguna ventana (ni nada), hasta que tu método acabe.

Cuando se llama a tu actionPerformed() y llamas a run() y te lías a hacer bucles y esperas, NADA se repintara en tus ventanas hasta que terminen todos tus bucles y esperas, es decir, el efecto que dices, sólo se pinta cuando acabas.

Para evitar esto, tu actionPerformed() debe lanzar un nuevo hilo para realizar todas esas operaciones que estás haciendo, de esta forma, el hilo EDT se libera inmediatamente permitiendo el repintado de ventanas mientras el hilo creado por tí trabaja con sus bucles y esperas.

Más info aquí EDT

Se bueno.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines