如何实现动态二维数组?
一维可以用vector,二维如何实现?vector套vector屡试不爽 问题点数:120、回复次数:17Top
1 楼Truman(Soul_Asylum)回复于 2001-04-01 19:43:00 得分 0
居然没人知道?
Top
2 楼yangzi(笨笨)回复于 2001-04-01 19:47:00 得分 0
不好意思,我刚试通我的例子。
你可以用ArrayList嵌套来实现。
给你一个例子看一下:
import java.util.*;
public class Test{
public static void main(String args[]){
ArrayList a1=new ArrayList();
ArrayList a2=new ArrayList();
a1.add("student");
a1.add("students");
a2.add(a1);
System.out.println(((ArrayList)a2.get(0)).get(1));
}
}Top
3 楼yangzi(笨笨)回复于 2001-04-01 19:50:00 得分 0
我用的是jdk1.3,Top
4 楼yaw()回复于 2001-04-02 09:35:00 得分 10
可以用一维的Vector来模拟二维的数组
Vector2 extends Vector {
m_iColCount = 0;
public setColCount( int);
public int getColCount();
public setRowCount( int);
public int getColCount();
public setValueAt( Object, int, int);
public Object getValueAt( int, int);
}Top
5 楼robber(海盗)回复于 2001-04-02 09:47:00 得分 5
一维数组可以用一个的Vector
2维数组可以用两个的Vector
n维数组可以用n个的Vector
甚至可以使维数动态化
Top
6 楼yaw()回复于 2001-04-02 10:06:00 得分 5
2维数组可以用两个的Vector?
is 2*ColConut?Top
7 楼yaw()回复于 2001-04-02 10:07:00 得分 0
n维数组可以用n个的Vector?
is RowCount + 1?Top
8 楼lmy2000(pluto)回复于 2001-04-02 10:23:00 得分 0
觉得robber说的有理。因为Vector可以是动态增长的。Top
9 楼ursula(@@)回复于 2001-04-02 11:00:00 得分 0
you can use HashtableTop
10 楼Dureek(普博)回复于 2001-04-02 11:13:00 得分 0
但是, 请不要在大型项目中使用Vector, 如果想用, 还得自己去构造一个类似的 :(Top
11 楼wenliang_d(走一步,是一步)回复于 2001-04-02 14:18:00 得分 0
to Dureek(普博) :
为什么在大型项目当中不用vector?在stl当中,vector是最基本的模板,难道有什么问题吗?
共同探讨!Top
12 楼Truman(Soul_Asylum)回复于 2001-04-02 15:26:00 得分 0
我试了,不过不对劲,如:我设置第五行第三列为“shit",结果所有的行第三列都变成了'shit',
用vector套vector结果也是这样,不知何故。
import java.util.*;
public class two{
public static void main(String args[]){
ArrayList xArray = new ArrayList();
ArrayList yArray = new ArrayList();
//Vector vtContainer = new Vector();
int [] iSon = new int[5];
for(int i = 0; i < 10; i++){
xArray.clear();
for(int j = 0; j < 5; j++){
iSon[j] = 0;//i*10 + j;
xArray.add("item"+iSon[j]);
}
//vtContainer.addElement(iSon);
yArray.add(xArray);
}
((ArrayList)yArray.get(5)).set(3,"shit");
int [] iTemp = new int [5];
//Array.newInstance(Integer,iTemp);
for(int i = 0; i < yArray.size(); i++){
for(int j = 0; j < ((ArrayList)yArray.get(i)).size(); j++){
//ob = vtContainer.get(i);
//out.print("Line " + i + ":" + iTemp[j]);
System.out.print(((ArrayList)yArray.get(i)).get(j));
}
System.out.print("\n");
}
}
}
Top
13 楼yangzi(笨笨)回复于 2001-04-03 19:05:00 得分 100
呵呵,我告诉你问题在哪。
看你的代码,
你只new出一个xarray来,然后同一个内容重复添加了10次。
所以你第一次都要new出一个xArray来。
用下面的代码试试:
import java.util.*;
public class two{
public static void main(String args[]){
ArrayList yArray = new ArrayList();
//Vector vtContainer = new Vector();
int [] iSon = new int[5];
for(int i = 0; i < 10; i++){
ArrayList xArray =new ArrayList();
for(int j = 0; j < 5; j++){
iSon[j] = 0;//i*10 + j;
xArray.add("item"+iSon[j]);
}
//vtContainer.addElement(iSon);
yArray.add(xArray);
}
((ArrayList)yArray.get(5)).set(3,"shit");
int [] iTemp = new int [5];
//Array.newInstance(Integer,iTemp);
for(int i = 0; i < yArray.size(); i++){
for(int j = 0; j < ((ArrayList)yArray.get(i)).size(); j++){
//ob = vtContainer.get(i);
//out.print("Line " + i + ":" + iTemp[j]);
System.out.print(((ArrayList)yArray.get(i)).get(j));
}
System.out.print("\n");
}
}
}
Top
14 楼yangzi(笨笨)回复于 2001-04-03 19:06:00 得分 0
呵呵,写错一个字;
所以你第一次都要new出一个xArray来。
应该是
所以你每一次都要new出一个xArray来。
Top
15 楼skyyoung(路人甲)回复于 2001-04-03 23:32:00 得分 0
怎么样还搞不点吗?Top
16 楼hello_wyq(半瓶墨水)回复于 2001-04-06 21:41:00 得分 0
效率实在是低,一个十分简单的问题被你们搞的十分的复杂。
我想问各位网友,如果它是C++的话,你们还会这样做的吗?
我想恐怕是没有人回这样的吧!
我来给你们一个解决的方法吧,举个例子把,我现在要创建一个int型的的动态数组,
仅仅是一个很简单的例子,网友可不要跟我叫汁!
Sample:
public class Test {
public int[][] arr;
public Test() {
//我随意的取了一个3,就是说我的动态数组的初始化大小为3个NODE。
//你可以随意的更改。
arr = new int[3][];
//动态创建它的两维部分,有点象树。
for(int i = 0,j = 2; i < arr.length; i ++) {
arr[i] = new int[j ++];
}
//初始化树的值;
int index = 0;
for(int i = 0; i < arr.length; i ++) {
for(int j = 0; j < arr[i].length; j ++) {
arr[i][j] = index ++;
}
}
//检验一下正确性;
for(int i = 0; i < arr.length; i ++) {
for(int j = 0; j < arr[i].length; j ++) {
System.out.print(" " + arr[i][j]);
}
System.out.println("");
}
}
public static void main(String[] args) {
new Test();
}
}
其实,上面的程序有许多的地方维护性比较的差,比如在添加一个元数时,
可能要进行很多的操作,其实这也很好解决。方法之一是把你要的数据封装
起来。这儿限于篇幅,我就不仔细展开了。网友如果有兴趣的话,我们可以
MAIL联系!Top
17 楼rainsoft(小雨)回复于 2001-04-08 11:13:00 得分 0
个为仁兄,二维动态数组有那么麻烦吗??
var value :array of array of Integer;
setlength(value,3,3);//你可以任意指定Top




