private bool Repetidos(CBloque b, CCubeta cubeta) { CBloque bAux; for (int i = 0; i < cubeta.getTamaño(); i++) { bAux = getArchivo().leerBloque(cubeta.getAtDirBloque(i), b.getTamBlo()); if (bAux != null && (b.ComparateTo(bAux) == 0)) return (true); } return (false); }
/**Se escribe un objeto cubeta de la organizacion Hash Dinamica en el archivo de trabajo * \param cubeta Cubeta a escribir, ya cuenta con su direccion en el archivo*/ public void EscribeCubeta(CCubeta cubeta) { bw.BaseStream.Seek(cubeta.getDir(), SeekOrigin.Begin); bw.Write(cubeta.getDir()); bw.Write(cubeta.getTamaño()); bw.Write(cubeta.getNumDirBloques()); bw.Write(cubeta.getPrefAsoc()); for (int i = 0; i < cubeta.getTamaño(); bw.Write(cubeta.getAtDirBloque(i)), i++) ; }
/**Lectura de una cubeta que se utilizara en el Hash Dinamica*/ public CCubeta LeerCubeta(long dir) { CCubeta cubetaAux = null; if (dir != -1) { cubetaAux = new CCubeta(); br.BaseStream.Seek(dir, SeekOrigin.Begin); cubetaAux.setDir(br.ReadInt64()); cubetaAux.setTamaño(br.ReadInt32()); cubetaAux.setNumDirBloques(br.ReadInt32()); cubetaAux.setPrefAsoc(br.ReadInt32()); cubetaAux.creaVectDirReg(cubetaAux.getTamaño()); for (int i = 0; i < cubetaAux.getTamaño(); cubetaAux.setAtDirBloque(i, br.ReadInt64()), i++) ; } return (cubetaAux); }
private CCubeta creaCubeta(CCubeta c, CArchivo aN, CArchivo aO) { CCubeta nuevaCub; CBloque bloqAux; nuevaCub = new CCubeta(aN.ENDF(), c.getTamaño()); nuevaCub.setNumDirBloques(c.getNumDirBloques()); nuevaCub.setPrefAsoc(c.getPrefAsoc()); for (int i = 0; i < c.getTamaño(); i++) if ((bloqAux = aO.leerBloque(c.getAtDirBloque(i), tamBloque)) != null) { bloqAux.setTamBlo(tamBloque); nuevaCub.setAtDirBloque(i, aN.ENDF()); aN.EscribeBloque(bloqAux, aN.ENDF()); } nuevaCub.setDir(aN.ENDF()); aN.EscribeCubeta(nuevaCub); return (nuevaCub); }