• NIO基础方法一


    1.remaining();返回当前位置与limit之间得元素数。

    int[] intArray={1,2,3,4};
            IntBuffer intBuffer=IntBuffer.wrap(intArray);
            intBuffer.limit(3);
            intBuffer.position(1);
            System.out.println(intBuffer.remaining());

     2.isDirect() 判断是否为直接缓冲区。

    ByteBuffer byteBuffer=ByteBuffer.allocateDirect(100);
            System.out.println(byteBuffer.isDirect());

    3.clear()还原缓冲区得状态,是状态,不是数据;比如将position=0.market丢失掉。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.limit(3);
            byteBuffer.mark();
            
            byteBuffer.clear();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

    4.flip() 向缓冲区写入一些数据后,下一步直接读取缓冲区中得数据之前,以改变limit与position得值。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.mark();
            
            byteBuffer.flip();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

     5.hasArray()判断此缓冲区是否具有可访问得底层实现数组。

    ByteBuffer byteBuffer=ByteBuffer.allocate(100);
            byteBuffer.put((byte) 1);
            byteBuffer.put((byte) 2);
            System.out.println(byteBuffer.hasArray());
            
            ByteBuffer byteBuffer2=ByteBuffer.allocateDirect(100);
            byteBuffer2.put((byte) 1);
            byteBuffer2.put((byte) 2);
            System.out.println(byteBuffer2.hasArray());

    6.hasRemaining() 判断当前位置与限制之间是否有元素。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer bytebuffer=ByteBuffer.wrap(byteArray);
            bytebuffer.limit(3);
            bytebuffer.position(2);
            System.out.println(bytebuffer.hasRemaining()+";"+bytebuffer.remaining());

    7.rewind()  position置为0,标记清除掉,limit不变。

    8.clear() position置为0,limit=capacity,market=-1.清除缓冲区得状态。

    9.List.toArrat(T[])  转成数组。

    ByteBuffer buffer1=ByteBuffer.wrap(new byte[]{'a','b','c'});
            ByteBuffer buffer2=ByteBuffer.wrap(new byte[]{'x','y','z'});
            ByteBuffer buffer3=ByteBuffer.wrap(new byte[]{'1','2','3'});
            List<ByteBuffer> list=new ArrayList<ByteBuffer>();
            list.add(buffer1);
            list.add(buffer2);
            list.add(buffer3);
            
            ByteBuffer[] byteBufferArray=new ByteBuffer[list.size()];
            list.toArray(byteBufferArray);
            System.out.println(byteBufferArray.length);
            for(int i=0;i<byteBufferArray.length;i++){
                ByteBuffer eachByteBuffer=byteBufferArray[i];
                while (eachByteBuffer.hasRemaining()) {
                    System.out.print((char) eachByteBuffer.get());
                }
                System.out.println();
            }
  • 相关阅读:
    2014年第五届蓝桥杯省赛试题(JavaA组)
    2013年第四届蓝桥杯省赛试题(JavaA组)
    2013蓝桥杯JavaA组T10 大臣的旅费(树的直径)
    CodeForces
    天梯赛 L2-006 树的遍历(序列建树)
    PAT甲 1095 解码PAT准考证/1153 Decode Registration Card of PAT(优化技巧)
    2015年第六届蓝桥杯省赛T10 生命之树(树形dp+Java模拟vector)
    ZOJ
    SPOJ
    HDU
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/10961172.html
Copyright © 2020-2023  润新知