你在ArrayList中存的是一个Map对象,而在一个map对象上进行name,code操作你认为会怎么样,你的要求是要在map对象里存的值进行name,code操作,而不是map对象,所以肯定是不行了,而你下面可以执行的代码便是将要显示的数据放入了ArrayList中,而不是象上面的将显示的值放入Map,然后将Map放入ArrayList

解决方案 »

  1.   

    那怎么样构造一个树形结构?或者DataTable结构..
    能不能给个例子?
    多谢了....
      

  2.   

    刚刚才发现你问了这么多问题,不知道你现在解决了没有。构件目录结果最多使用的是composite模式,如下面的代码:class FileNode  
    {
    public:
    FileNode(string name){
    this->name=name;
    }
    FileNode(){}
    virtual ~FileNode();
    virtual void addFile(FileNode* node){
    children.push_back(node);
    }
    virtual list<FileNode*>::const_iterator getChildNode(){
    return children.begin();
    }
    virtual string getName(){
    return name;
    }
    virtual bool hasNext(list<FileNode*>::const_iterator iter){
    return iter!=children.end()&&children.size()!=0;
    }
    protected:
    list<FileNode*> children;
    string name;
    };class File  :public FileNode
    {
    public:
    File(string name){
    this->name=name;
    }
    //File(){}
    virtual ~File();
    virtual void addFile(){
    return;
    }
    virtual list<FileNode*>::const_iterator getChildNode(){
    return fileTemp.begin();
    }
    private:
    list<FileNode*> fileTemp;
    };class Directinary  :public FileNode
    {
    public:
    Directinary(string name){
    this->name=name;
    }
    virtual ~Directinary();
    /*
    virtual string getName(){
    return this->name;
    }
    */
    };
    那么你现在只要使用void outFile(FileNode* node){
    list<FileNode*>::const_iterator iter=node->getChildNode();
    for (;node->hasNext(iter);iter++)
    {
    FileNode* nodeTemp=*iter;
    cout<<"fileName\t"<<nodeTemp->getName()<<endl;
    //outFile(nodeTemp);
    }
    iter=node->getChildNode();
    for (;node->hasNext(iter);iter++)
    {
    FileNode* nodeTemp=*iter;
    //cout<<"fileName\t"<<nodeTemp->getName()<<endl;
    outFile(nodeTemp);
    }
    }int main(int argc, char* argv[])
    {
    printf("Hello World!\n"); Directinary direc("c");
    Directinary direc1("dir1"); File file1("file1");
    File file2("file2");
    File file3("file3"); direc1.addFile(&file1);
    direc1.addFile(&file2);
    direc.addFile(&direc1);
    direc.addFile(&file3);
    outFile(&direc);
    return 0;
    }
      

  3.   

    在jsp中使用java和这个也类似,但是可能要自己定义标签来输出,因为简单的jstl是不行的,他不能实现递归