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

📄 jm2dvector.java

📁 梦界家园程序开发基底框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package jm.util;

import java.util.*;

/**
 *  俀師尦攝楍峔憿偱奺庬僨乕僞宆偺崁栚抣傪曐帩偡傞僋儔僗<BR>
 *<BR>
 *  JM2DVector 僆僽僕僃僋僩偼俢俛偺僥乕僽儖僨乕僞傪堦帪揑偵曐帩偡傞偙偲傪庡側
 *栚揑偲偟偰偄傞丅堦斒偵摨堦楍悢偐傜惉傞暋悢偺峴僨乕僞傪奿擺偡傞丅<BR>
 *<BR>
 *  JM2DVector 僆僽僕僃僋僩傊偺僨乕僞搊榐偼丄addItem() 儊僜僢僪傪屇傃弌偡偙偲
 *偵傛傝丄愭摢峴乛愭摢楍偐傜丄楍斣崋傪弴師僀儞僋儕儞僩偟偰峴傢傟傞丅師偺峴傊堏
 *傞応崌偼丄柧帵揑偵 nextRow() 儊僜僢僪傪屇傃弌偡丅<BR>
 *  奺峴偺楍悢偼昁偢偟傕摨堦偱偁傞昁梫偼側偄偑丄僨乕僞撉傒弌偟帪偵懚嵼偟側偄楍
 *傪巜掕偡傞偲椺奜偑憲弌偝傟傞丅傑偨丄楍柤傪晅偗偰僨乕僞傪搊榐偡傞偙偲偵傛傝丄
 *峴斣崋偲楍柤傪巜掕偟偰僨乕僞撉傒弌偟偑壜擻偲側傞丅<BR>
 *  楍柤傪巊梡偡傞偐偳偆偐偼僆僽僕僃僋僩惗惉帪偵巜掕偡傞丅徣棯帪偺婯掕抣偼楍柤
 *巊梡偲偡傞丅<BR>
 *<BR>
 *  JM2DVector 僆僽僕僃僋僩偐傜偺僨乕僞撉傒弌偟偼丄峴斣崋偲楍斣崋乛楍柤傪巜掕
 *偟偰 getXxxValue() 儊僜僢僪傪屇傃弌偡偙偲偵傛傝幚峴偡傞丅<BR>
 *<BR>
 *  摨堦楍偺僨乕僞宆偼昁偢偟傕摨堦偱偁傞昁梫偼側偄偑丄撉傒弌偟帪偵偼惓偟偄僨乕
 *僞宆傪巜掕偟側偗傟偽側傜側偄丅<BR>
 *  楍柤晅偒偱僨乕僞搊榐傪峴偆応崌丄摨堦楍偵偼摨堦柤傪巜掕偟側偗傟偽側傜側偄丅
 *乮戝暥帤丄彫暥帤偼摨堦偲傒側偡乯<BR>
 *<BR>
 *  JM2DVector 僆僽僕僃僋僩偵搊榐偱偒傞僨乕僞宆偼師偺偲偍傝<BR>
 *丂丒java.lang.String<BR>
 *丂丒java婎杮宆乮byte丄short丄int丄long丄float丄double丄char丄boolean乯<BR>
 *丂丒byte攝楍<BR>
 *丂丒java.util.Date<BR>
 *<BR>
 *  搊榐偟偨僨乕僞傪撉傒弌偡偲偒偵巜掕偱偒傞僨乕僞宆偼 JMItem 僀儞僞僼僃乕僗
 *偺巇條偲摨條偲偡傞丅
 * @author Spook(1shome)
 * @see jdk1.5.2
 * @version 1.5.2.2
 */
public class JM2DVector implements
        Cloneable,
        java.io.Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 9003036324918062869L;

    public final static String NULL = "";

    //////////////////////////////////////////////////////////////////////////
    // 僼傿乕儖僪愰尵
    private final String CLASS_NAME = "JM2DVector";
    private boolean poAutoNext = false; //僨乕僞搊榐帪僇儗儞僩楍斣崋

    private String psName; //JM2DVector僆僽僕僃僋僩偺柤徧
    private int piCurrentRow; //僨乕僞搊榐帪僇儗儞僩峴斣崋
    private int piCurrentCol; //僨乕僞搊榐帪僇儗儞僩楍斣崋

    private JMVector<JMVector> paRows; //峴攝楍
    private JMVector<String> paColNames; //楍柤攝楍
    private HashMap<String, Integer> poColNameMap; //楍柤丒楍斣崋儅僢僾

    //////////////////////////////////////////////////////////////////////////
    // 僐儞僗僩儔僋僞

    /**
     * 僐儞僗僩儔僋僞
     */
    public JM2DVector () {
        this("", true);
    }

    /**
     * JM2DVector 柤徧傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
     * @param  asName		楍柤巊梡僼儔僌
     */
    public JM2DVector (String asName) {
        this(asName, true);
    }

    /**
     * 楍柤巊梡僼儔僌傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
     * @param  abNamedColumn		楍柤巊梡僼儔僌
     */
    public JM2DVector (boolean abNamedColumn) {
        this("", abNamedColumn);
    }

    /**
     * JM2DVector 柤徧偲楍柤巊梡僼儔僌傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
     * @param  asName			JM2DVector 柤徧
     * @param  abNamedColumn	楍柤巊梡僼儔僌
     * @throws NullPointerException	僷儔儊乕僞偑 null 偺応崌
     */
    public JM2DVector (String asName, boolean abNamedColumn) {
        setName(asName); //僆僽僕僃僋僩柤徧
        piCurrentRow = 0; //僨乕僞搊榐帪僇儗儞僩峴斣崋
        piCurrentCol = 0; //僨乕僞搊榐帪僇儗儞僩楍斣崋
        paRows = new JMVector<JMVector>(); //峴攝楍
        paColNames = null; //楍柤攝楍
        poColNameMap = null; //楍柤丒楍斣崋儅僢僾
        if (abNamedColumn) {
            paColNames = new JMVector<String>();
            poColNameMap = new HashMap<String, Integer>();
        }
    }

    //////////////////////////////////////////////////////////////////////////
    // public 儊僜僢僪

    /**
     * JM2DVector 僆僽僕僃僋僩偺柤徧傪曉偡丅
     * @return JM2DVector 僆僽僕僃僋僩偺柤徧
     */
    public String getName () {
        return psName;
    }

    /**
     *
     */
    public void clear () {
        setName(psName); //僆僽僕僃僋僩柤徧
        piCurrentRow = 0; //僨乕僞搊榐帪僇儗儞僩峴斣崋
        piCurrentCol = 0; //僨乕僞搊榐帪僇儗儞僩楍斣崋
        paRows = new JMVector<JMVector>(); //峴攝楍
        paColNames = new JMVector<String>();
        poColNameMap = new HashMap<String, Integer>();
    }

    /**
     * Returns a shallow copy of this <tt>JMVector</tt> instance.  (The
     * elements themselves are not copied.)
     *
     * @return  a clone of this <tt>JMVector</tt> instance.
     */
//    public JM2DVector clone ( JM2DVector o2DArray )
//    {
//        try
//        {
//            if ( o2DArray == null )return null ;
//
//            return JMFilter.JM2DVectorCopy ( o2DArray ) ;
//        }
//        catch ( Exception e )
//        {
//            return null ;
//        }
//    }

    /**
     * JM2DVector 僆僽僕僃僋僩偺柤徧傪愝掕偡傞丅
     * @param  asName		JM2DVector 柤徧
     * @throws NullPointerException	僷儔儊乕僞抣偑 null 偺応崌
     */
    public void setName (String asName) {
        if (asName == null) {
            throw new NullPointerException();
        }
        asName = asName.trim();
        psName = asName;
    }

    public boolean equals (Object obj) {
        if (JMUtility.compare(obj, this) != 0) {
            return false;
        }
        return true;
    }

    public void setAutoNext (boolean ibNext) {
        poAutoNext = ibNext;
    }

    /**
     * 楍柤傪巊梡偡傞愝掕偵側偭偰偄傞偐偳偆偐傪曉偡丅
     * @return 楍柤巊梡偵愝掕偝傟偰偄傞応崌 true丄偦偆偱側偗傟偽 false
     */
    public boolean hasNamedColumn () {
        return (paColNames != null);
    }

    /**
     * 僆僽僕僃僋僩偑嬻偐偳偆偐傪曉偡丅
     * @return 峴偑搊榐偝傟偰偄側偄応崌 true丄偦偆偱側偗傟偽 false
     */
    public synchronized boolean isEmpty () {
        return (rowCount() == 0);
    }

    /**
     * 搊榐偝傟偨峴悢傪庢摼偡傞丅
     * @return 峴悢
     */
    public synchronized int rowCount () {
        return paRows.size();
    }

    /**
     * 巜掕峴偵搊榐偝傟偨楍悢傪庢摼偡傞丅
     * @param  aiRow		峴斣崋乮0 乣乯
     * @return 峴悢
     * @throws Exception	晄惓側峴斣崋偑巜掕偝傟偨応崌
     */
    public synchronized int getColCount (int aiRow) throws Exception {
//        final String sMethod = "getColCount";
        // 峴斣崋偼惓忢斖埻偐丠
        if (aiRow < 0 || aiRow >= rowCount()) {
            throw new Exception("峴斣崋[" + aiRow + "]偑晄惓偱偡");
        }
        // 巜掕峴偺楍僨乕僞攝楍傪庢摼偡傞
        JMVector aColumns = paRows.get(aiRow);
        return aColumns.size();
    }

    /**
     * 楍柤攝楍傪庢摼偡傞丅
     * @return 楍柤攝楍
     */
    public synchronized Collection getColNames () {
        return paColNames;
    }

    /**
     * 楍柤攝楍傪庢摼偡傞丅
     * @return 楍柤攝楍
     */
    public synchronized Object getColName (int aiCol) {
        return paColNames.get(aiCol);
    }

    /**
     * 楍柤攝楍傪庢摼偡傞丅
     * @return 楍柤攝楍
     */
    public synchronized int colCount () {
        return paColNames.size();
    }

    /**
     * 楍柤丒楍斣崋儅僢僾傪庢摼偡傞丅
     * @return 楍柤儅僢僾
     */
    public synchronized Map getColNameMap () {
        return poColNameMap;
    }

    /**
     * 巜掕偝傟偨峴斣崋偵奩摉偡傞楍僨乕僞攝楍傪庢摼偡傞丅
     * @param  aiRow		峴斣崋乮0 乣乯
     * @return 楍僨乕僞攝楍
     * @throws Exception	晄惓側峴斣崋偑巜掕偝傟偨応崌
     */
    public synchronized Collection getRow (int aiRow) throws Exception {
        // 峴斣崋偼惓忢斖埻偐丠
        if (aiRow < 0 || aiRow >= rowCount()) {
            throw new Exception("峴斣崋[" + aiRow + "]偑晄惓偱偡");
        }
        // 巜掕峴偺楍僨乕僞攝楍傪庢摼偡傞
        return paRows.get(aiRow);
    }

    /**
     * 巜掕偝傟偨峴斣崋偵奩摉偡傞楍僨乕僞攝楍傪庢摼偡傞丅
     * @param  aiRow		峴斣崋乮0 乣乯
     * @return 楍僨乕僞攝楍
     * @throws Exception	晄惓側峴斣崋偑巜掕偝傟偨応崌
     */
    public synchronized JMVector<String> getRowData (int aiRow) throws
            Exception {

        // 峴斣崋偼惓忢斖埻偐丠
        if (aiRow < 0 || aiRow >= rowCount()) {
            throw new Exception("峴斣崋[" + aiRow + "]偑晄惓偱偡");
        }
        JMVector row = getColItemArray(aiRow);
        if (row == null)
            return null;
        JMVal icol = null;
        JMVector<String> coldate = new JMVector<String>();
        // 楍斣崋偵奩摉偡傞崁栚僨乕僞傪庢摼偡傞
        for (int i = 0; i < row.size(); i++) {
            icol = getItemObject(row, i);
            coldate.add(icol.getStringValue());
        }
        // 巜掕峴偺楍僨乕僞攝楍傪庢摼偡傞
        return coldate;

    }

    /**
     * 僇儗儞僩峴偺愭摢楍偐傜弴斣偵楍柤傪晅偗偰崁栚抣傪搊榐偡傞丅<BR>
     * 僆僽僕僃僋僩惗惉帪偺峴斣崋丄楍斣崋偼偲傕偵 0 偱偁傞丅
     * @param  asName		楍柤
     * @param  aoValue		僶儕傾儞僩僆僽僕僃僋僩
     * @throws Exception
     *						晄惓側楍柤乮嬻暥帤丄null乯傪巜掕偟偨応崌丄
     *						楍柤枹巊梡愝掕偺僆僽僕僃僋僩偱屇傃弌偝傟偨応崌丄
     *						摨堦峴偵搊榐嵪傒楍柤傪巜掕偟偨応崌丄
     *						婛搊榐峴偺摨堦楍偲堎側傞楍柤傪巜掕偟偨応崌
     */
    public synchronized void add (String asName, Object aoValue) throws
            Exception {

        // 楍柤傪惓婯壔偟偰搊榐偡傞
        registerColumnName(asName);
        // 崁栚僆僽僕僃僋僩傪搊榐偡傞
        addItemBody(new JMVal(aoValue));

    }

    /**
     * 侾峴偺僨乕僞搊榐傪廔椆偟丄師偺峴偺愭摢楍偵堏傞丅<BR>
     * 僇儗儞僩峴偵崁栚抣傪侾審傕搊榐偟偰偄側偄忬懺偱杮儊僜僢僪傪屇傃弌偟偨応
     *崌丄偦偺屇傃弌偟偼柍帇偝傟傞丅
     */
    public synchronized void nextRow () {
        if (piCurrentCol > 0) {
            piCurrentRow++;
            piCurrentCol = 0;
        }
    }

    /**
     * 峴斣崋丄楍柤傪巜掕偟偰奩摉偡傞崁栚抣傪庢摼偡傞丅
     * @param  aiRow		峴斣崋乮0 乣乯
     * @param  asName		楍柤
     * @return Object 宆崁栚抣
     * @throws Exception	晄惓側峴斣崋偑巜掕偝傟偨応崌丄
     *								晄惓側楍柤偑巜掕偝傟偨応崌丄
     *								晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
     */
    public synchronized Object get (int aiRow, String asName) throws Exception {

        // 峴斣崋偵奩摉偡傞楍僨乕僞攝楍傪庢摼偡傞
        JMVector aColumns = getColItemArray(aiRow);
        // 楍柤偵奩摉偡傞崁栚僨乕僞傪庢摼偡傞
        JMVal oItem = getItemObject(aColumns, getColByName(asName));
        return oItem.getObjectValue();

    }

    /**
     * 峴斣崋丄楍柤傪巜掕偟偰奩摉偡傞崁栚抣傪庢摼偡傞丅
     * @param  aiRow		峴斣崋乮0 乣乯
     * @param  asName		楍柤
     * @return byte 宆崁栚抣
     * @throws Exception	晄惓側峴斣崋偑巜掕偝傟偨応崌丄
     *								晄惓側楍柤偑巜掕偝傟偨応崌丄
     *								晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
     */
    public synchronized Object get (int aiRow, int aiCol) throws Exception {

        // 峴斣崋偵奩摉偡傞楍僨乕僞攝楍傪庢摼偡傞
        JMVector aColumns = getColItemArray(aiRow);
        // 楍柤偵奩摉偡傞崁栚僨乕僞傪庢摼偡傞
        JMVal oItem = (JMVal) aColumns.get(aiCol);
        return oItem.getObjectValue();

    }

    @SuppressWarnings ("unchecked")
    public boolean delCol (int aiColNo) throws Exception {

        JMVector<String> vc = (JMVector) paColNames.clone(); //峴攝楍
        vc.remove(aiColNo); //楍柤攝楍
        JMVector<JMVector> vCol = (JMVector) paRows.clone(); //楍柤丒楍斣崋儅僢僾

        for (int i = 0; i < this.rowCount(); i++) {
            vCol.get(i).remove(aiColNo);
        }
        //del ok
        paRows = vCol;
        paColNames = vc;
        return true;

    }

    /**
     * 儗僐乕僪偺峴嶍彍
     * @param aiRowNo 峴斣崋乮0 乣乯
     * @throws Exception
     */
    public boolean delRow (int aiRowNo) throws Exception {

        if (aiRowNo < 0 || aiRowNo >= paRows.size()) {
            throw new IndexOutOfBoundsException();
        }
        // 楍斣崋偼惓忢斖埻偐丠
        if (aiRowNo < 0 || aiRowNo > rowCount()) {
            throw new Exception("峴斣崋[" + aiRowNo + "]偑晄惓偱偡");
        }
        paRows.remove(aiRowNo);

⌨️ 快捷键说明

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