package com.qq.util;
/*
* 一个简单封装存储二维数据表的类
*/
import java.util.*;
public class Table {
// 数据表列的数目
private int COLUMN = 10;
// 数据表的数据
private Vector<ArrayList<String>> m_v = new java.util.Vector<ArrayList<String>>();
// Vector<String[]> m_c = new java.util.Vector<String[]>(COLUMN);
// 数据表的列名
private String[] m_c = new String[COLUMN];
public <T> void out(T s) {
System.out.println(s);
}
/*
* 指定列数目构造
*/
public Table(int column) {
if (column >= 0) {
this.COLUMN = column;
m_c = new String[COLUMN];
}
}
public void modifyitemvalue(int row, int column, String value) {
checkrow(row);
checkcolumn(column);
m_v.get(row).set(column, value);
}
public boolean insertrow(ArrayList<String> value) {
if (value.size() != this.COLUMN) {
return false;
}
m_v.add(value);
return true;
}
public String getitemvalue(int row, int column) {
checkrow(row);
checkcolumn(column);
return m_v.get(row).get(column);
}
public int getrow() {
return m_v.size();
}
public int getcolumn() {
return this.COLUMN;
}
public boolean setcolumnname(String[] name) {
// 加入列名
if (name.length != this.COLUMN) {
return false;
}
System.arraycopy(this.m_c, 0, name, 0, this.COLUMN);
return true;
}
public void setcolumnname(int column, String name) {
// 加入列名
checkcolumn(column);
m_c[column] = name;
}
public String getcolumnname(int column) {
checkcolumn(column);
return m_c[column];
}
private void checkrow(int row) {
if (row >= this.m_v.size() || row < 0) {
String err = "row index invalid";
throw new ArrayIndexOutOfBoundsException(err);
}
}
private void checkcolumn(int column) {
if (column >= this.COLUMN || column < 0) {
String err = "column index invalid";
throw new ArrayIndexOutOfBoundsException(err);
}
}
/*
* 测试用例
*/
private Table value() {
final int COLUMN = 6;
// 加入列名
Table v = new Table(COLUMN);
String[] column = new String[COLUMN];
for (int i = 0; i < COLUMN; ++i) {
v.setcolumnname(i, "COLUMN" + i);
column[i] = "COLUMN" + i;
}
v.setcolumnname(column);
// 插入数据行数
for (int k = 0; k < 10; ++k) {
ArrayList<String> value = new ArrayList<String>(COLUMN);
for (int i = 0; i < COLUMN; ++i) {
value.add("Item" + i);
}
v.insertrow(value);
}
return v;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Table table = new Table(0);
Table v = table.value();
while (true) {
String name = "";
for (int k = 0; k < v.getcolumn(); ++k) {
name += v.getcolumnname(k) + "|";
}
table.out(name);
break;
}
for (int i = 0; i < v.getrow(); ++i) {
String name = "";
for (int k = 0; k < v.getcolumn(); ++k) {
name += v.getitemvalue(i, k) + "|";
}
table.out(name);
}
}
}