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

📄 tuple.java

📁 一个简单的数据库
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package database;import java.io.*;import java.util.ArrayList;/** * * @author outlaw */public class Tuple implements Serializable{    String[] values;        public Tuple(String[] vals)    {        int len=vals.length;        values=new String[len];        for(int i=0;i<len;i++)        {            values[i]=vals[i];        }    }    public Comparable getValue(int attribID,String type)    {        String value=values[attribID];        if(type.equals("int"))            return Integer.parseInt(value);        if(type.equals("float"))            return Float.parseFloat(value);        if(type.startsWith("char"))            return value;        return null;    }    public Tuple(byte[] data,String[] types) throws Exception    {        ByteArrayInputStream bais=new ByteArrayInputStream(data);        DataInputStream dis=new DataInputStream(bais);        int len=types.length;        values=new String[len];        for(int i=0;i<len;i++)        {            if(types[i].equals("int"))            {                values[i]=String.valueOf(dis.readInt());            }            if(types[i].equals("float"))            {                values[i]=String.valueOf(dis.readFloat());            }            if(types[i].startsWith("char"))            {                int realLength=dis.read();                int maxLen=Integer.parseInt(types[i].substring(4));                char[] charData=new char[realLength];                for(int j=0;j<realLength;j++)                {                    charData[j]=dis.readChar();                }                values[i]=new String(charData);                dis.skip((maxLen-realLength)*2);            }        }    }    public byte[] toBytes(String[] types) throws Exception    {        ByteArrayOutputStream baos=new ByteArrayOutputStream();        DataOutputStream dos=new DataOutputStream(baos);        //int count=0;        for(int i=0;i<types.length;i++)        {            if(types[i].equals("int"))            {                dos.writeInt(Integer.parseInt(values[i]));                //count+=4;            }            if(types[i].equals("float"))            {                dos.writeFloat(Float.parseFloat(values[i]));                //count+=4;            }            if(types[i].startsWith("char"))            {                //这个写入的length在【1,255】之间,是字符的长度,而不是字节的长度                dos.writeByte(values[i].length());                dos.writeChars(values[i]);                int leftLen=Integer.parseInt(types[i].substring(4))-values[i].length();                //写入多余的没用的bytes                for(int j=0;j<leftLen*2;j++)                    dos.writeByte(0);                //count+=Integer.parseInt(types[i].substring(4))*2+1;            }        }        //System.out.println("Write out"+count+"bytes!");        //byte[] array=baos.toByteArray();        //System.out.println("Actually Write out"+array.length+"bytes!");        dos.close();                return baos.toByteArray();    }    public String[] getValues()    {        return values;    }    @Override    public String toString()    {        StringBuilder builder=new StringBuilder();        builder.append("[");        for(int i=0;i<values.length-1;i++)        {            builder.append(values[i]+",");        }        builder.append(values[values.length-1]+"]");                return builder.toString();    }}

⌨️ 快捷键说明

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