📄 jm2darray.java
字号:
package jm.util;
import java.math.BigDecimal;
import java.util.Arrays;
/**
* 俀師尦攝楍峔憿偱奺庬僨乕僞宆偺崁栚抣傪曐帩偡傞僋儔僗<BR>
* <BR>
* JM2DArray 僆僽僕僃僋僩偼俢俛偺僥乕僽儖僨乕僞傪堦帪揑偵曐帩偡傞偙偲傪庡側 栚揑偲偟偰偄傞丅堦斒偵摨堦楍悢偐傜惉傞暋悢偺峴僨乕僞傪奿擺偡傞丅<BR>
* <BR>
* JM2DArray 僆僽僕僃僋僩傊偺僨乕僞搊榐偼丄addItem() 儊僜僢僪傪屇傃弌偡偙偲
* 偵傛傝丄愭摢峴乛愭摢楍偐傜丄楍斣崋傪弴師僀儞僋儕儞僩偟偰峴傢傟傞丅師偺峴傊堏 傞応崌偼丄柧帵揑偵 nextRow() 儊僜僢僪傪屇傃弌偡丅<BR>
* 奺峴偺楍悢偼昁偢偟傕摨堦偱偁傞昁梫偼側偄偑丄僨乕僞撉傒弌偟帪偵懚嵼偟側偄楍 傪巜掕偡傞偲椺奜偑憲弌偝傟傞丅傑偨丄楍柤傪晅偗偰僨乕僞傪搊榐偡傞偙偲偵傛傝丄
* 峴斣崋偲楍柤傪巜掕偟偰僨乕僞撉傒弌偟偑壜擻偲側傞丅<BR>
* 楍柤傪巊梡偡傞偐偳偆偐偼僆僽僕僃僋僩惗惉帪偵巜掕偡傞丅徣棯帪偺婯掕抣偼楍柤 巊梡偲偡傞丅<BR>
* <BR>
* JM2DArray 僆僽僕僃僋僩偐傜偺僨乕僞撉傒弌偟偼丄峴斣崋偲楍斣崋乛楍柤傪巜掕 偟偰 getXxxValue()
* 儊僜僢僪傪屇傃弌偡偙偲偵傛傝幚峴偡傞丅<BR>
* <BR>
* 摨堦楍偺僨乕僞宆偼昁偢偟傕摨堦偱偁傞昁梫偼側偄偑丄撉傒弌偟帪偵偼惓偟偄僨乕 僞宆傪巜掕偟側偗傟偽側傜側偄丅<BR>
* 楍柤晅偒偱僨乕僞搊榐傪峴偆応崌丄摨堦楍偵偼摨堦柤傪巜掕偟側偗傟偽側傜側偄丅 乮戝暥帤丄彫暥帤偼摨堦偲傒側偡乯<BR>
* <BR>
* JM2DArray 僆僽僕僃僋僩偵搊榐偱偒傞僨乕僞宆偼師偺偲偍傝<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.3.2
*/
public class JM2DArray implements Cloneable, java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 3477205289913390597L;
public final static String NULL = "";
// ////////////////////////////////////////////////////////////////////////
// 僼傿乕儖僪愰尵
private final String CLASS_NAME = "JM2DArray";
private boolean poAutoNext = false; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
private String psName; // JM2DArray僆僽僕僃僋僩偺柤徧
private int piCurrentRow; // 僨乕僞搊榐帪僇儗儞僩峴斣崋
private int piCurrentCol; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
private JMVector<JMVector<JMVal>> paRows; // 峴攝楍
private JMVector<String> paColNames; // 楍柤攝楍
private JMMap<String, Integer> poColNameMap; // 楍柤丒楍斣崋儅僢僾
private JMVector parrSort; // 峴僜乕僩峴攝楍
private boolean poAbNamedColumn = false; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
// ////////////////////////////////////////////////////////////////////////
// 僐儞僗僩儔僋僞
/**
* 僐儞僗僩儔僋僞
*/
public JM2DArray () {
this("", true);
}
/**
* JM2DArray 柤徧傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
*
* @param asName
* 楍柤巊梡僼儔僌
*/
public JM2DArray (String asName) {
this(asName, true);
}
/**
* 楍柤巊梡僼儔僌傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
*
* @param abNamedColumn
* 楍柤巊梡僼儔僌
*/
public JM2DArray (boolean abNamedColumn) {
this("", abNamedColumn);
}
/**
* JM2DArray 柤徧偲楍柤巊梡僼儔僌傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
*
* @param asName
* JM2DArray 柤徧
* @param abNamedColumn
* 楍柤巊梡僼儔僌
* @throws NullPointerException
* 僷儔儊乕僞偑 null 偺応崌
*/
public JM2DArray (String asName, boolean abNamedColumn) {
setName(asName); // 僆僽僕僃僋僩柤徧
piCurrentRow = 0; // 僨乕僞搊榐帪僇儗儞僩峴斣崋
piCurrentCol = 0; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
paRows = new JMVector<JMVector<JMVal>>(); // 峴攝楍
paColNames = new JMVector<String>();
poColNameMap = new JMMap<String, Integer>();
poAbNamedColumn = abNamedColumn;
parrSort = new JMVector();
}
/**
* 擖椡僗僩儕乕儉偐傜捈楍壔僨乕僞傪撉傒崬傫偱僆僽僕僃僋僩傪暅尦偡傞偨傔偺 僐儞僗僩儔僋僞
*
* @param aoIn
* 擖椡僗僩儕乕儉
* @throws Exception
* 僨乕僞撉傒崬傒拞偵廔抂偵払偟偨応崌丄 擖弌椡僄儔乕偑敪惗偟偨応崌丄 擖椡僗僩儕乕儉偺撪梕偑晄惓偺応崌
*/
public JM2DArray (JMInputStream aoIn) throws Exception {
psName = null; // JM2DArray僆僽僕僃僋僩偺柤徧
piCurrentRow = 0; // 僨乕僞搊榐帪僇儗儞僩峴斣崋
piCurrentCol = 0; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
paRows = new JMVector<JMVector<JMVal>>(); // 峴攝楍
paColNames = null; // 楍柤攝楍
poColNameMap = null; // 楍柤丒楍斣崋儅僢僾
deserializeFrom(aoIn);
}
// ////////////////////////////////////////////////////////////////////////
// public 儊僜僢僪
/**
* JM2DArray 僆僽僕僃僋僩偺柤徧傪曉偡丅
*
* @return JM2DArray 僆僽僕僃僋僩偺柤徧
*/
public String getName () {
return psName;
}
/**
*
*/
public void clear () {
setName(psName); // 僆僽僕僃僋僩柤徧
piCurrentRow = 0; // 僨乕僞搊榐帪僇儗儞僩峴斣崋
piCurrentCol = 0; // 僨乕僞搊榐帪僇儗儞僩楍斣崋
paRows = new JMVector<JMVector<JMVal>>(); // 峴攝楍
paColNames = new JMVector<String>();
poColNameMap = new JMMap<String, Integer>();
parrSort = new JMVector();
}
/**
* 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 JM2DArray clone (JM2DArray o2DArray) {
try {
if (o2DArray == null)
return null;
return JMFilter.JM2DArrayCopy(o2DArray);
} catch (Exception e) {
return null;
}
}
/**
* JM2DArray 僆僽僕僃僋僩偺柤徧傪愝掕偡傞丅
*
* @param asName
* JM2DArray 柤徧
* @throws NullPointerException
* 僷儔儊乕僞抣偑 null 偺応崌
*/
public void setName (String asName) {
if (asName == null) {
throw new NullPointerException();
}
asName = asName.trim();
psName = asName;
}
/**
* 暋悢崁栚偱寛傑偭偨弴偵僜乕僩偱偒傞傛偆偵偡傞丅
*
* @param aArrColName
* 暋悢崁栚
* @throws Exception
* 晄惓側楍柤偑巜掕偝傟偨応崌
*/
public void setSort (JMVector aArrColName) throws Exception {
parrSort = (JMVector) aArrColName.clone();
sort(parrSort);
}
/**
* 暋悢崁栚偱寛傑偭偨弴偵僜乕僩偱偒傞傛偆偵偡傞丅
*
* @param aArrColName
* 暋悢崁栚
* @throws Exception
* 晄惓側楍柤偑巜掕偝傟偨応崌
*/
@SuppressWarnings ("unchecked")
public void setSort (String[] aArrColName) throws Exception {
parrSort = new JMVector(Arrays.asList(aArrColName));
sort(parrSort);
}
public boolean equals (Object obj) {
if (JMUtility.compare(obj, this) != 0) {
return false;
}
return true;
}
/**
* 暋悢崁栚偱寛傑偭偨弴偵僜乕僩偱偒傞傛偆偵偡傞丅
*
* @param aArrColName
* 暋悢崁栚
* @throws Exception
* 晄惓側楍柤偑巜掕偝傟偨応崌
*/
@SuppressWarnings ("unchecked")
private synchronized void sort (JMVector aArrColName) throws Exception {
if (aArrColName.size() == 0) {
return;
}
for (int i = 0; i < rowCount(); i++) {
for (int j = 0; j < rowCount() - 1 - i; j++) {
for (int k = 0; k < aArrColName.size(); k++) {
String psSrc = this.getStringValue(j, aArrColName
.get(k).toString());
String psDesc = this.getStringValue(j + 1, aArrColName
.get(k).toString());
if (psDesc.compareTo(psSrc) < 0) {
JMVector<JMVal> ptem = paRows.get(j);
paRows.set(j, paRows.get(j + 1));
paRows.set(j + 1, ptem);
break;
} else if (psDesc.compareTo(psSrc) > 0) {
break;
}
}
}
}
}
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 {
// 峴斣崋偼惓忢斖埻偐丠
if (aiRow < 0 || aiRow >= rowCount()) {
throw new Exception("峴斣崋[" + aiRow + "]偑晄惓偱偡");
}
// 巜掕峴偺楍僨乕僞攝楍傪庢摼偡傞
JMVector aColumns = paRows.get(aiRow);
return aColumns.size();
}
/**
* 楍柤攝楍傪庢摼偡傞丅
*
* @return 楍柤攝楍
*/
public synchronized String[] getColArrayNames () {
String[] cloNames = new String[paColNames.size()];
for (int i = 0; i < paColNames.size(); i++) {
String val = paColNames.get(i);
cloNames[i] = val;
}
return cloNames;
}
/**
* 楍柤攝楍傪庢摼偡傞丅
*
* @return 楍柤攝楍
*/
public synchronized int colCount () {
return paColNames.size();
}
/**
* 楍柤丒楍斣崋儅僢僾傪庢摼偡傞丅
*
* @return 楍柤儅僢僾
*/
public synchronized JMMap<String, Integer> getColNameMap () {
return poColNameMap;
}
/**
* 楍柤攝楍傪庢摼偡傞丅
*
* @return 楍柤攝楍
*/
public synchronized JMVector<String> getColNames () {
return paColNames;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -