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

📄 record.java

📁 Disk simulation program. Simulates file-system with direct access.
💻 JAVA
字号:
public class Record implements Comparable
{
    public static final int NAME_LENGTH = 27;
    public static final int COUNTRY_LENGTH = 27;
    public static final int ALTITUDE_LENGTH = 6;
    public static final int RECORD_SIZE = NAME_LENGTH + COUNTRY_LENGTH + ALTITUDE_LENGTH;

    /**
     * Mountain name
     */
    private char[] name;
    /**
     * Country
     */
    private char[] country;
    /**
     * Altitude
     */
    private char[] altitude;

    /**
     * Creates empty arrays
     */
    private void initArrays()
    {
        this.name = new char[NAME_LENGTH];
        this.country = new char[COUNTRY_LENGTH];
        this.altitude = new char[ALTITUDE_LENGTH];
    }

    /**
     * Constructs a new Record.
     */
    public Record()
    {
        initArrays();
    }

    /**
     * Constructs a new Record with initial data.
     */
    public Record(char[] name, char[] country, char[] altitude)
    {
        initArrays();
        setName(new String(name) + '\0');
        setCountry(new String(country) + '\0');
        setAltitude(new String(altitude) + '\0');
    }

    /**
     * Getter for property 'name'.
     *
     * @return Value for property 'name'.
     */
    public char[] getName()
    {
        return name;
    }

    /**
     * Setter for property 'name'.
     *
     * @param name Value to set for property 'name'.
     */
    public void setName(String name)
    {
        System.arraycopy(name.toCharArray(), 0, this.name, 0, Math.min(name.length(), NAME_LENGTH));
    }

    /**
     * Getter for property 'country'.
     *
     * @return Value for property 'country'.
     */
    public char[] getCountry()
    {
        return country;
    }

    /**
     * Setter for property 'country'.
     *
     * @param country Value to set for property 'country'.
     */
    public void setCountry(String country)
    {
        System.arraycopy(country.toCharArray(), 0, this.country, 0, Math.min(country.length(), COUNTRY_LENGTH));
    }

    /**
     * Getter for property 'altitude'.
     *
     * @return Value for property 'altitude'.
     */
    public char[] getAltitude()
    {
        return altitude;
    }

    /**
     * Setter for property 'altitude'.
     *
     * @param altitude Value to set for property 'altitude'.
     */
    public void setAltitude(String altitude)
    {
        System.arraycopy(altitude.toCharArray(), 0, this.altitude, 0, Math.min(altitude.length(), ALTITUDE_LENGTH));
    }

    /**
     * Converts all object fields into char array
     *
     * @return char array
     */
    public char[] convertToData()
    {
        StringBuilder sb = new StringBuilder();
        sb.append(getName());
        sb.setCharAt(sb.length() - 1, '\0');
        sb.append(getCountry());
        sb.setCharAt(sb.length() - 1, '\0');
        sb.append(getAltitude());
        sb.setCharAt(sb.length() - 1, '\0');
        return sb.toString().toCharArray();
    }

    /**
     * Parses file, read from file into object fields.
     *
     * @param dataStr - string from file
     */
    public void parseFromFile(String dataStr)
    {
        int i = dataStr.indexOf('#');
        String name = dataStr.substring(0, i);

        int j = dataStr.indexOf('#', i + 1);
        String country = dataStr.substring(i + 1, j);

        String altitude = dataStr.substring(j + 1, dataStr.length());

        setName(name);
        setCountry(country);
        setAltitude(altitude);
    }

    /**
     * Converts char array into object fields
     *
     * @return char array
     */
    public void parseFromData(char[] data)
    {
        String dataStr = new String(data);
        String name = dataStr.substring(0, NAME_LENGTH);
        String country = dataStr.substring(NAME_LENGTH, COUNTRY_LENGTH + NAME_LENGTH);
        String altitude = dataStr.substring(COUNTRY_LENGTH + NAME_LENGTH, ALTITUDE_LENGTH + COUNTRY_LENGTH + NAME_LENGTH);
        setName(name);
        setCountry(country);
        setAltitude(altitude);
    }

    /**
     * Compares 2 Records by name, used for sorting (see Comparable interface documentation)
     */
    public int compareTo(Object o)
    {
        String thisName = new String(this.getName());
        Record thatObj = (Record) o;
        String thatName = new String(thatObj.getName());
        return thisName.compareTo(thatName);
    }
}

⌨️ 快捷键说明

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