⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 byte_array.java

📁 j2me解压缩j2me解压缩j2me解压缩j2me解压缩j2me解压缩j2me解压缩j2me解压缩j2me解压缩
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }        else        {            //FAST=false            for (int q = 0; q < len; ++q)            {                final int nsrc = srcoff + q;                final int ndst = dstoff + q;                dst.set(ndst, this.get(nsrc));            }//for        }//if(FAST)    }    public final void copyFrom(byte_AccessibleArray src, int srcoff, int dstoff, int len)    {        src.copyTo(srcoff, this, dstoff, len);    }    public final void clear(int off, int len)    {        if (FAST)        {            //FAST==true            byte[] bb = new byte[Math.min(50, this.length())];            final int c = this.length() / bb.length;            for (int i = 0; i <= c; ++i)            {                final int off1 = off + c * bb.length;                if (off1 < this.length())                {                    //System.arraycopy(bb,0,a,off1,Math.min(bb.length,a.length-off1));	                    copyFrom(bb, 0, off1, Math.min(bb.length, this.length() - off1));                }//if(off1<this.length())            }//for        }        else        {            //FAST==false            for (int i = off; i < off + len; ++i)            {                set(i, (byte) 0);            }//for        }//if(FAST)    }//-------------------------------------------------------------------- /*    //� ��� ��� �������� ���������, ��������������� ������������� ��� byte_array    //�������� ��� ����������� � ����� �� ������ �����������������    //��� ��� ����� ��� �� �������.    //��� � ���������� ����� byte_array ������ byte_AccessibleArray,    //� ���������� ������������ ��� ���������� ���������.    public static final void Copy(byte_array src,int srcoff, byte_array dst, int dstoff, int len){    //if(len==0)return;         //src.copyTo(srcoff,dst,dstoff,len);    if(len==0)return;    if(FAST){    //faster (but possibly more buggy) algorithm, using System.arraycopy    //FAST==true    Vector spl = new Vector();    final int d=dstoff-srcoff;    final int end=srcoff+len;    //��� ������������ � �������� � "������� ���������"    //������� ���������    int ps=(srcoff/src.block_size)*src.block_size;    int pd=(dstoff/dst.block_size)*dst.block_size - d;    ps=ps+src.block_size;    pd=pd+dst.block_size;    spl.addElement(new Integer(srcoff));    while(pd<end || ps<end){    final int last=elem(spl.size()-1,spl);    if(ps<pd){    if(last<ps){spl.addElement(new Integer(ps));}    ps=ps+src.block_size;    }else{    if(last<pd){spl.addElement(new Integer(pd));}    pd=pd+dst.block_size;	    }//if    }//wihile    spl.addElement(new Integer(end));    //������ � ��� ���� �������� ����� �������� spl    //����� ��� ��� ������� �� "������������ ��������"    //������ �� �������� spl �������� �� ���� ��������    //(�� ��� ��� ������� ����! ;)  )    //��� ���� ��� ��� � ��� ������ ������ ��������,    //�� ��������� ������ � ������� � end - ������ �� ����������!    //���� ���������� ����������� � ��� �� ����� "������",    //� ������� ����������� �������������, �� ���� ��� ������    //��� ������ ��������� ����������� �����.    //�������� ������ ����������� ��� ��������(System.arraycopy)...    //for(int i=0;i<spl.size();++i){    // System.out.println(spl.elementAt(i));    //}//for    //System.out.println();     final int A,B,C;    if(srcoff<dstoff){    //������ ������    A=spl.size()-2;B=0;C=-1;    }else{    //����� �������    A=0;B=spl.size()-2;C=1;    }//if    //System.out.println("!!!!!!!!!!!!!!! A="+A+" spl.size()="+spl.size()+" srcoff="+srcoff+" dstoff="+dstoff);    for(int i=A;(C>0?i<=B:i>=B);i=i+C){    //System.out.println("!!!!!!!!!!!!!!! i="+i+" A="+A+" B="+B);    int b=((Integer)spl.elementAt(i)).intValue();    int e=((Integer)spl.elementAt(i+1)).intValue()-1;    int l=e-b+1;    final int src_c=b/src.block_size;    final int src_r=b%src.block_size;    final int dst_b=b+d;    final int dst_c=(dst_b)/dst.block_size;    final int dst_r=(dst_b)%dst.block_size;    //System.out.println("b="+b+" e="+e+" l="+l+":  src_c="+src_c+" src_r="+src_r+" dst_c="+dst_c+" dst_r="+dst_r);    if(src.arrays[src_c]==null){    if(dst.arrays[dst_c]!=null) {    if(dst_r==0&&dst.arrays[dst_c].length==l){    dst.arrays[dst_c]=null;    }else{    clear(dst.arrays[dst_c],dst_b,l);    }//if    }//if    }else{    //src.arrays[src_c]!=null       if(dst.arrays[dst_c]==null){dst.set(dst_b,(byte)-1);}    System.arraycopy(src.arrays[src_c],src_r,dst.arrays[dst_c],dst_r,l);          }//if//---DEBUG ONLY    if(DEBUG>0){    final int src_c_2=e/src.block_size;    final int dst_c_2=(e+d)/dst.block_size;    if(src_c!=src_c_2){System.out.println("dynamic_array: internal error #1");}    if(dst_c!=dst_c_2){System.out.println("dynamic_array: internal error #1");}    }//if(DEBUG>0)    //---------    }//for    }else{    //slower algorithm with no System.arrycopy using    //FAST==false    final int A,B,C;    if(srcoff<dstoff){    //������ ������    A=len-1;B=0;C=-1;    }else{    //����� �������    A=0;B=len-1;C=1;    }//if    for(int q=A;(C>0?q<=B:q>=B);q=q+C){       //for(int q=0;q<len;++q) {    final int nsrc=srcoff+q;       final int csrc=nsrc/src.block_size;    final int rsrc=nsrc%src.block_size;    final int ndst=dstoff+q;       final int cdst=ndst/dst.block_size;    final int rdst=ndst%dst.block_size;    if(src.arrays[csrc]==null){    if(dst.arrays[cdst]!=null){    dst.set(ndst,(byte)0);    }//if    }else{    if(dst.arrays[cdst]!=null){    dst.set(ndst,src.get(nsrc));    }else    if(src.get(nsrc)!=0){    dst.set(ndst,src.get(nsrc));	    }//if...else if ...    }//if    //dst.set(ndst,src.get(nsrc));     }//for    }//if(FAST)    }    public static final void Copy(byte[] src,int srcoff, byte_array dst, int dstoff, int len){    if(FAST){    //FAST==true    Vector spl = new Vector();    final int d=dstoff-srcoff;    final int end=srcoff+len;    //��� ������������ � �������� � "������� ���������"    //������� ���������    int pd=(dstoff/dst.block_size)*dst.block_size - d;    pd=pd+dst.block_size;    spl.addElement(new Integer(srcoff));    while(pd<end){    final int last=elem(spl.size()-1,spl);    if(last<pd){spl.addElement(new Integer(pd));}    pd=pd+dst.block_size;    }//wihile    spl.addElement(new Integer(end));    for(int i=0;i<spl.size()-1;++i){    final int b=((Integer)spl.elementAt(i)).intValue();    final int e=((Integer)spl.elementAt(i+1)).intValue()-1;    final int l=e-b+1;    final int dst_b=b+d;    final int dst_c=(dst_b)/dst.block_size;    final int dst_r=(dst_b)%dst.block_size;    if(dst.arrays[dst_c]==null){dst.set(dst_b,(byte)-1);}    System.arraycopy(src,b,dst.arrays[dst_c],dst_r,l);    }//for    }else{     //FAST==false      for(int q=0;q<len;++q) {    final int nsrc=srcoff+q;    final int ndst=dstoff+q;    dst.set(ndst,src[nsrc]);    }//for    }//if(FAST)      }    public static final void Copy(byte_array src,int srcoff, byte[] dst, int dstoff, int len){    //FAST==true    if(FAST){    Vector spl = new Vector();         final int d=dstoff-srcoff;    final int end=srcoff+len;    int ps=(srcoff/src.block_size)*src.block_size;    ps=ps+src.block_size;    spl.addElement(new Integer(srcoff));    while(ps<end){    final int last=elem(spl.size()-1,spl);    if(last<ps){spl.addElement(new Integer(ps));}    ps=ps+src.block_size;    }//wihile    spl.addElement(new Integer(end));    for(int i=0;i<spl.size()-1;++i){    int b=((Integer)spl.elementAt(i)).intValue();    int e=((Integer)spl.elementAt(i+1)).intValue()-1;    int l=e-b+1;    final int src_c=b/src.block_size;    final int src_r=b%src.block_size;    final int dst_b=b+d;    if(src.arrays[src_c]!=null){    System.arraycopy(src.arrays[src_c],src_r,dst,dst_b,l);	    }else{    clear(dst,dst_b,l);    }//if    }//for    }else{     //FAST=false    for(int q=0;q<len;++q) {    final int nsrc=srcoff+q;    final int ndst=dstoff+q;          dst[ndst]=src.get(nsrc);    }//for    }//if(FAST)    }      *///--------------------------------------------------------    private static final void clear(byte[] a, int off, int len)    {        //System.out.println("fill in array with "+len+" zeros");        if (FAST)        {            //FAST==true            byte[] bb = new byte[Math.min(50, a.length)];            final int c = a.length / bb.length;            for (int i = 0; i <= c; ++i)            {                final int off1 = off + c * bb.length;                if (off1 < a.length)                {                    System.arraycopy(bb, 0, a, off1, Math.min(bb.length, a.length - off1));                }            }//for        }        else        {            //FAST==false            for (int i = off; i < off + len; ++i)            {                a[i] = (byte) 0;            }//for        }//if(FAST)    }//--------------------------------------------------------    private static final int elem(int n, Vector vec)    {        return ((Integer) vec.elementAt(n)).intValue();    }//--------------------------------------------------------    // protected void finalize(){    //  System.out.println("Dynamic array of byte "+name+" used "+totalAllocated()+" of "+length()+" allocated  ("+(totalAllocated()*100/length())+"%)");    // }//========================================================    /*         public static void main(String[] args){    byte_array src = new byte_array(100,3);    byte_array dst = new byte_array(100,4);    int srcoff=3;    int dstoff=3;    int len=9;    byte_array.Copy(src,srcoff, dst,dstoff,len);    final int n=65536;    byte_array array = new byte_array(n);    for(int i=0;i<n;++i){    byte q=(byte)i;       array.set(i,q);    if(q!=array.get(i)){    System.out.print(i+": ");           System.out.println(" error "+q+"!="+array.get(i));    System.out.println();        }    }//for    for(int i=0;i<n;++i){    byte q=(byte)i;    if(q!=array.get(i)){    System.out.print(i+": ");           System.out.println(" error "+q+"!="+array.get(i));    System.out.println();        }    }//for    }     */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -