domingo, 9 de septiembre de 2012

Stack java (pila)

la clase Stack de java.utils ofrece una estructura de datos tipo pila con, con el metodo peek se accede a su tope y con pop() se elmina el tope


    public static void main(String[] args) {
       
        Stack pila = new Stack();
       
        System.out.println(pila.isEmpty());
        pila.add("luisa");
        pila.add("pepe");
        pila.add("toño");
        pila.add("mario");
       
        System.out.println("tope de pila:"+pila.peek());
        System.out.println("eliminando :"+pila.pop());
        System.out.println("tope de pila:"+pila.peek());
       
    }

resultado de la ejecucion


run:
true
tope de pila:mario
eliminando :mario
tope de pila:toño

Hashtable java


la clase Hastable crea una estructura de clave - valor, el siguiente metodo crea una hashtable con claves int y valores String

1 -> pepe
2 -> luis
3 -> maria

public static void main(String[] args) {
     
        Hashtable hashTable= new Hashtable();
     
        hashTable.put(1, "juan");
        System.out.println("valor de la clave 1:"+hashTable.get(1));
        hashTable.put(1, "pepe");
        System.out.println("remplazando el valor de la clave 1:"+hashTable.get(1));
        hashTable.put(999, "luis");
        hashTable.put(7, "maria");
        System.out.println("¿contiene clave  7?:"+hashTable.containsKey(7));
        System.out.println("eliminando");
        hashTable.remove(999);
        System.out.println(hashTable.get(999));
     
    }

el resultado de la ejecucion


run:
valor de la clave 1:juan
remplazando el valor de la clave 1:pepe
¿contiene clave  7?:true
eliminando
null

Listas con java


public static void main(String[] args) {
       
        List<String> listaNombres = new ArrayList<String>();
        listaNombres.add("juan");
        listaNombres.add("pepe");
        listaNombres.add("maria");
        System.out.println("tamaño:"+listaNombres.size());
        System.out.println("tercer elemento:"+listaNombres.get(2));
        System.out.println("Eliminando elemento <maria>");
        listaNombres.remove("maria");
        System.out.println("tamaño:"+listaNombres.size());
       
       
        System.out.println("todos");
        for(String nombre:listaNombres){
            System.out.println(nombre);
        }
       
    }


resultado en consola


tamaño:3
tercer elemento:maria
Eliminando elemento <maria>
tamaño:2
todos
juan
pepe

Expresiones regulares, validacion con java regex

java tiene una api para la validacion de expresiones regulares, el siguiente metodo valida que la string sea un mail de gmail.com


    public static boolean isCorreoGmail(String correo) {
         
        Pattern pat =Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@gmail.com)$");
        Matcher mat =pat.matcher(correo);
        if (mat.find()) {
            System.out.println("[" + mat.group() + "]");
            return true;
        }
        return false;
    }

ConstructDescription
[abc]a, b, or c (simple class)
[^abc]Any character except a, b, or c (negation)
[a-zA-Z]a through z, or A through Z, inclusive (range)
[a-d[m-p]]a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]]d, e, or f (intersection)
[a-z&&[^bc]]a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]]a through z, and not m through p: [a-lq-z] (subtraction)


ConstructDescription
.Any character (may or may not match line terminators)
\dA digit: [0-9]
\DA non-digit: [^0-9]
\sA whitespace character: [ \t\n\x0B\f\r]
\SA non-whitespace character: [^\s]
\wA word character: [a-zA-Z_0-9]
\WA non-word character: [^\w]

GreedyReluctantPossessiveMeaning
X?X??X?+X, once or not at all
X*X*?X*+X, zero or more times
X+X+?X++X, one or more times
X{n}X{n}?X{n}+X, exactly n times
X{n,}X{n,}?X{n,}+X, at least n times
X{n,m}X{n,m}?X{n,m}+X, at least n but not more than m times


Boundary ConstructDescription
^The beginning of a line
$The end of a line
\bA word boundary
\BA non-word boundary
\AThe beginning of the input
\GThe end of the previous match
\ZThe end of the input but for the final terminator, if any
\zThe end of the input


javadoc con annotations


En netbeans y otros IDE puede ponersele una explicacion a los metodos y clases para algun otro usuario que valla a utilizar nuestro codigo

/**
     * La explicacion que se ponga en este espacio es la que
     * aparece con ctr - space en netbeans
     * se debe poner una etiqueta param para cada parametro que reciba
     * @param dia true es para dia y false para noche
     * @param ingles true es para ingles y false para español
     * @return un saludo en español o ingles, para el dia o para la noche
     */
    public String getSaludo(boolean dia, boolean ingles){
        if(dia && ingles){
            return "good days";
        }else if(dia && !ingles){
            return "buenos dias";
        }else if(!dia && ingles){
            return "good nights";
        }else{
            return "buenas noches";
        }
    }
 
    public void test(){
        String saludo=getSaludo(true, false);
        System.out.println(saludo);
    }


leer archivo con java


JFileChooser chooser= new JFileChooser();
        chooser.setDialogTitle("seleccione un block de notas");
        chooser.setMultiSelectionEnabled(false);
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        int sel = chooser.showOpenDialog(this);
        if (sel == JFileChooser.APPROVE_OPTION){
            File selectedFile = chooser.getSelectedFile();
            String cadena="";
            try {
                FileInputStream fis = new FileInputStream(selectedFile);
                int ch;
                while((ch= fis.read()) != -1){
                   cadena=cadena+ (char)ch;
                }
            } catch (Exception ex) {
                System.out.println("error en la lectura del archivo");
            }
            this.jTextField1.setText(cadena);
       
        }