精华内容
下载资源
问答
  • 二维表结构是
    千次阅读
    2016-02-24 23:54:27

    问题的解决思路有很多,网上找了资料,非常感谢,这里做个总结。

    【存放二维表数据的Java数据结构】
        适合封装多个表中的数据
        1. List<Map>
        2. ArrayList<ArrayList<Object>> 做二维表存储数据
        3. 行列数比较固定可以使用,Object[][]
        4. HashMap<String,ArrayList<String>>    
        适合封装的数据是一个表中数据
        5. ArrayList<Bean>
        6. HashMap<String, String>
           "1-1"   <--->  需要存放的数据

           第"1"个表示行、第二个"1"表示列

    注意:数组的性能比List和Map的效率高。
    我做了的功能是导入excel表格到数据库中多张表,涉及到excel解析。

    我使用的是以下的数据结构解决
    Map<String, Map<String, List<String>>>
    主要:考虑了excel的多个sheet、多个row,一行有多column


    更多相关内容
  • 支持无限套娃的一个function。 regroup(data,parent_id){ ... i++) {//循环传进来的二维表数组 if (data[i].parent_id == parent_id) {//判断当前数组中是否有子节点----panrent_id =parent_id,有相同的就存储起来

    支持无限套娃的一个function。

      regroup(data,parent_id){
        var arr=[]//建立一个新的数组用来存储结果数据
        var temp;//临时变量
        for (var i = 0; i < data.length; i++) {//循环传进来的二维表数组
            if (data[i].parent_id == parent_id) {//判断当前数组中是否有子节点----panrent_id =parent_id,有相同的就存储起来
                var obj = {
                    mc: data[i].mc,
                    dm: data[i].dm,
                    parentdwdm: data[i].parent_id,
                    children:[]
                };
                temp = this.regroup(data, data[i].dm);//再去找这个对象在整个数组中有没有子节点
                if (temp&&temp.length > 0) {//如果有子节点就赋值给obj.children.
                    obj.children = temp;
                }
                arr.push(obj);//把obj存储到数组中。
            }
        }
        return arr;
      }
    

    同理还有一个组件支持显示无线套娃。这个是我手写的。
    A.HTML

    <!-- 无限套娃,树组件 -->
    
    
    <ion-list class="listclass" *ngFor="let fl of data;let i=index">
        <ion-item class="itemclasswbj" (click)="lxlbcx(fl.mc,fl.dm,fl.parentdwdm,i)" [id]="fl.dm">
            <span class="bttop ">I</span> {{fl.mc}}
            <ion-icon name="ios-arrow-down" style="color: #c6c6c6; " item-right *ngIf="fl.type=='show'">
            </ion-icon>
            <ion-icon name="ios-arrow-forward" style="color: #c6c6c6; " item-right *ngIf="fl.type=='hide'">
            </ion-icon>
        </ion-item>
    <!--这里最关键。如果点击的对象有子节点。就循环套当前组件 -->
        <ion-card *ngIf="type=='show' +i " style="margin-top: 10px;margin-left:5px; ">
    
            <ion-tree [data]='children_data' (out)='outpust($event)'>
    
            </ion-tree>
    
        </ion-card>
    </ion-list>
    

    A.TS

    import { NavController } from 'ionic-angular';
    import {  Component,Input,Output,EventEmitter } from '@angular/core';
    
    @Component({
      selector: 'ion-tree',
      templateUrl: 'ion-tree.html'
    })
    export class IonTreeComponent {
      
      @Input() data: any = []; //获取从父组件传递过来的数据
    
      
     @Output() out: EventEmitter<any> = new EventEmitter;//返回数据
     constructor(public navCtrl:NavController) { 
    }
    
      type: string='hide'//状态
      v_index:any=-1//用来记录上次选择的是哪个对象
      children_data:any=[]//子节点数组
      v_former_id:any=''//旧ID,用来变色
      v_former_type_i:any=''//旧index,用来记录上次是显示的哪个
      lxlbcx(mc,dm,parentdwdm,index)
      {
        //点击进来就先关闭子节点
        this.type='hide'
        
        if(  this.v_former_type_i!='')//判断旧index是否存在
        this.data[this.v_former_type_i].type='hide'//存在就把上次点击的图片按钮变换回来(↓变成→)
    
        if(this.v_index==-1)//有没有打开的节点,-1没有
        {
          this.v_index=index
          if(this.v_former_id!='')//判断是否有之前点击过的行。有就把之前选的行颜色变成黑色。本次的变成蓝色
          {
            document.getElementById(this.v_former_id).style.color="#000000"
            this.v_former_id=dm//记录本次变色的ID
            document.getElementById(dm).style.color="#0089FF"
          }
          else{//第一次点,就直接变成当前选择的行
            this.v_former_id=dm
            document.getElementById(dm).style.color="#0089FF"
          }
      
          if(this.data[index].children.length>0)//判断当前选择的对象有没有子节点
          {  
            this.type='show'+index//用来展示到对应的节点下面
            this.v_former_type_i=index//记录展开的节点index
            this.data[index].type='show'
            this.children_data=this.data[index].children//给子节点数组赋值
           
         
          }
          var obj = {
            mc:mc,
            dm:dm,
            parentdwdm:parentdwdm
          }
          this.out.emit(obj)//回传当前选择的行
        }
        else if(this.v_index==index)//点击了之前点击的行
        {
          if( this.data[index].type=='show')//判断当前是否是展开的是就隐藏起来
          this.data[index].type='hide'
          this.v_index=-1//变成从来没有选择过的状态。第一次打开
        }else
        {
        //有进行过选择行的操作
          if(this.v_former_id!='')//判断是否有之前点击过的行。有就把之前选的行颜色变成黑色。本次的变成蓝色
          {
            document.getElementById(this.v_former_id).style.color="#000000"
            this.v_former_id=dm
            document.getElementById(dm).style.color="#0089FF"
          }
          else{
            this.v_former_id=dm
            document.getElementById(dm).style.color="#0089FF"
          }
          
          this.v_index=index
          if(this.data[index].children.length>0)//判断当前选择的对象有没有子节点
          {
            
            this.type='show'+index//用来展示到对应的节点下面
            this.v_former_type_i=index//记录展开的节点index
            this.data[index].type='show'
            this.children_data=this.data[index].children//给子节点数组赋值
           
            
          }
          var obj = {
            mc:mc,
            dm:dm,
            parentdwdm:parentdwdm
          }
          this.out.emit(obj)//回传当前选择的行
        }
       
      }
      outpust(res){
        this.out.emit(res)//监听子节点返回的参数
      }
    }
    
    
    

    调用上面封装的组件

     <ion-tree [data]='v_data' (out)='outpust($event)' style="height: 100%;"></ion-tree>
    
    展开全文
  • 云计算-考虑界面效应的二维声子晶体能带结构计算与分析.pdf
  • 基于二维数组和十字链的Apriori算法 数组和链表(02).pdf
  • 数据结构实例教程(C语言版):第5章 二维数组及广义结构分析.ppt
  • 对已有数据表进行一维和二维之间的转化: import pandas as pd ...如上图所示df是一个二维表。 # 将二维数据表转化为一维数据表: new_data = df.set_index('地区') # 将df中的地区一列设置为索引列 df1 = new_...

    对已有数据表进行一维和二维之间的转化:

    import pandas as pd
    
    # 读入数据:
    df = pd.read_excel('2dims.xls','Sheet1')
    df

    df的结构为:

    如上图所示df是一个二维表。

    # 将二维数据表转化为一维数据表:
    new_data = df.set_index('地区') # 将df中的地区一列设置为索引列
    df1 = new_data.stack()  # stack的返回对象df1是一个二级索引Series对象
    df2 = df1.reset_index() # 通过reset_index函数将Series对象的二级索引均转化为DataFrame对象的列值
    df2.columns = ['地区','时间','金额']
    df2

    df2的结构为:

    # 将一维数据表转化为二维数据表:
    s = pd.Series(list(df2['金额']),index=[df2['地区'],df2['时间']])  # 利用一维数据表df2构造一个二级索引Series对象
    df3 = s.unstack() # 对s执行stack的逆操作unstack
    df3

    df3的结构为:

    将SQL语句一维表形式的查询结果转化成二维表形式:

    说明:在数据库sql50中有一张学生成绩表grade(sid,cid,score),其中sid表示学生编号,cid表示课程编号,score表示课程成绩。

    grade表结构如下图所示:

    import pandas as pd
    import pymysql
    
    # 定义一个上下文管理器:
    class DataBase(object):
        
        def __init__(self,name,password):
            # 创建数据库连接
            self.conn = pymysql.connect('localhost','root',str(password),str(name),charset='utf8')
            # 创建cursor对象
            self.cursor = self.conn.cursor()
            
        def __enter__(self):
            return self.cursor  # 返回cursor对象,且这个cursor对象会被赋给with语句中as后面的变量
        
        def __exit__(self,exc_type,exc_value,traceback):
            self.cursor.close()    # 关闭游标对象
            self.conn.close()      # 断开数据库连接
            
     
    def main():
        with DataBase('sql50',883721) as db:
            db.execute('select * from grade')   # 执行sql语句
            content = db.fetchall()  # 获取数据(db中保存着查询结果集)
            df = pd.DataFrame(list(content))  # 将从数据库中查询出的数据放入DataFrame对象中
        return df
        
            
    if __name__ == '__main__':
        df = main()
    
    new_cols = ['sid','cid','score']
    df.columns = new_cols
    df.head()

    df部分数据如下图所示:

    将一维表形式的查询结果转化成二维表形式:

    # 将一维数据表转化为二维数据表:
    s = pd.Series(list(df['score']),index=[df['sid'],df['cid']])  # 利用一维数据表df2构造一个二级索引Series对象
    new_df = s.unstack() # 对s执行stack的逆操作unstack
    new_df

    new_df的结构为:

     

    参考:

    《Python for Data Analysis》2nd Edition

    https://blog.csdn.net/qq_41080850/article/details/85100641

    PS:本文为博主原创文章,转载请注明出处。

    展开全文
  • 数据结构-3期(KC002) 二维数组及广义结构分析与应用.docx 学习资料 复习资料 教学资源
  • 本主要是树状数据(多叉树)在数据库中存储的示例源码,同时包含数据的设计示例,满满的代码干货
  • 基于二维数组和十字链的Apriori算法 数组和链表.docx
  • 基于二维数组和十字链的Apriori算法 (1) 数组和链表.pdf
  • 一维表转二维表(mysql)

    千次阅读 2017-11-23 21:12:52
    /*创建表结构*/ INSERT INTO tmp0103.temp_test VALUES ( '1' , 'math' , '90' , '1' ); INSERT INTO tmp0103.temp_test VALUES ( '2' , 'english' , '90' , '1' ); INSERT INTO tmp0103....

    例子数据

    DROP TABLE IF EXISTS tmp0103.temp_test;
    CREATE TABLE tmp0103.temp_test (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `class` VARCHAR(255) DEFAULT NULL,
      `score` DOUBLE DEFAULT NULL,
      `userid` INT(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;  /*创建表结构*/
    
    INSERT INTO tmp0103.temp_test VALUES ('1', 'math', '90', '1');
    INSERT INTO tmp0103.temp_test VALUES ('2', 'english', '90', '1');
    INSERT INTO tmp0103.temp_test VALUES ('3', 'computer', '80', '1');
    INSERT INTO tmp0103.temp_test VALUES ('4', 'sports', '90', '1');
    INSERT INTO tmp0103.temp_test VALUES ('5', 'math', '80', '2');
    INSERT INTO tmp0103.temp_test VALUES ('6', 'english', '85', '2');
    INSERT INTO tmp0103.temp_test VALUES ('7', 'computer', '100', '2');

    通过定义变量存储临时结果

    /*以下如果在mysql客户端,需要一条一条执行*/
    SET @EE='';  /*定义变量EE为空*/
        SELECT @EE:=CONCAT(@EE,'SUM(IF(class=\'',class,'\'',',score,0)) AS ',class,',')   
        FROM (SELECT DISTINCT class FROM tmp0103.temp_test) A;  /*\'为在引号里面的\是对'的转义*/
    SET @QQ=CONCAT('SELECT tmp0103.temp_test.userid AS columnA,',LEFT(@EE,LENGTH(@EE)-1),'   
        FROM tmp0103.temp_test GROUP BY userid');  /*LEFT(@EE,LENGTH(@EE)-1),去掉EE中最后一句的最后一个,*/
    PREPARE stmt2 FROM @QQ; /*预处理需要执行的动态SQL,其中stmt是一个变量*/
    execute stmt2;  /*执行SQL语句*/
    deallocate prepare stmt;  /*释放掉预处理段*/
    展开全文
  • DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matlab也可以用cell存放多类型数据),DataFrame的单元格可以...
  • 目录如何分析单张二维表数据如何用PowerBI搞定几十张二维表操作步骤打开Power BI Desktop,获取数据,自文件夹,选择数据源路径,确定选择转换数据保留content列,删除其他列选择添加列,自定义列输入表格汇总公式...
  • 第五章 数组和广义;第五章 数组和广义;知识结构图;...行向量 下标 i 页向量 下标 i 列向量 下标 j 行向量 下标 j 列向量 下标 k 二维数组 三维数组;数组的顺序表示-小结;5.2 矩阵的压缩存储;5.2.1
  • Grid是个连续可增长的二维数据结构。这个 crate 的目的是提供一个...提示:以下是本篇文章正文内容,下面案例可供参考本期学习了Rust中二维表的使用,包括二维表的创建增加行增加列填充插入弹出迭代等相关操作。......
  • Excel:一维表和二维表 互转

    千次阅读 2017-02-14 13:43:45
    一、一维表转二维表 数据源: 一份流水账式的值班表,为了便于打印张贴,现在需要使其变成这样的样式: 也就是从一维表变成传说中的二维表。 一、新建查询 依次单击【数据】→【新建查询】 →【从...
  • 二维表

    千次阅读 2011-01-18 11:02:38
    在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系),二维表名就是关系名。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的...
  • 数据结构-二维数组-存储结构

    千次阅读 2017-09-28 11:18:40
    数组的两个主要的顺序存储方式,数组具有随机访问特点,要求能够依据下标计算出任一数组元素的存储地址(概念上的地址):计算机主存的每个地址和存储内的每个...在计算元素地址之前需要了解二维数组的两种存储方式。
  • 二维表似乎是设计不符合规范的数据表,因此,在进行数据分析或可视化之前,最好先将二维表转换为一维表。 在Spotfire中,分别添加一维表和二维表数据并进行可视化设计,发现两者的差异很大。一维表优势明显,有图为...
  • 无限分层的树状结构,应该如何设计数据库的表结构,并进行存储呢?前段时间被这个老生常谈的问题折磨的遍体鳞伤,正好利用本文给大家做一次分享与记录,欢迎指导! 友情提示,本文较长,会占用您5分钟的时间。 ...
  • 数据建模中的二维表和一维表!

    千次阅读 2012-05-04 22:19:36
    什么是表/一维表/二维表,哪位给个准确的定义 [复制链接] <!-- .pcb {margin-right:0} --> 透视表要求是一维表, 那什么是表、一维表、二维表呢?查了一下午也没有找到准确的定义, 把找到...
  • 数据结构——二维数组

    千次阅读 2019-01-25 17:38:35
    但是,创建二维数组以实现关系数据库外观相似的数据结构。它提供了一次容纳大量数据的便利性,可以在任何需要的地方传递给任意数量的功能。 如何声明二维数组 int arr[max_rows][max_columns]; 元素以行和列的形式...
  • 树状结构转换成维和一数组

    千次阅读 2019-05-12 16:30:26
    在项目中遇到树状结构的目录要变成一的数组,就是多级的嵌套目录转化为列表,在JavaScript中列表的数据就是以数组的形式来实现的。 假定现在有如下的树状结构的数据: const tree = [ { id: 1, items: [ { ...
  • 结构光,三成像,光栅投影技术
  • 关系数据库里,关系模式(模型)是型,关系是值,关系模式...关系实质上是一个二维表,表中每一条记录(行)在关系模式中被称为元组,每个字段(列)被称为属性。 前者是描述结构,后者是具体数据。严格上不能划等号。
  • 递归地在二维列表中搜索特定元素

    千次阅读 2021-01-13 18:19:32
    现在,作为序言,我同意上面的评论讨论,不建议在python中对没有参数的函数进行递归搜索,因为根据搜索的...递归搜索更适合于树、链表等非线性形状的数据结构,因为不可能使用for循环这样的有限映射来真正搜索它们。在
  • (1)简述列表(list)结构的特点。List(列表)List的元素以线性方式存储,可以存放重复对象,List主要有以下两个实现类:ArrayList : 长度可变的数组,可以对元素进行随机的访问,向ArrayList中插入与删除元素的速度慢。...
  • 何谓一维表、二维表

    万次阅读 2012-08-31 13:25:36
    :经常看到关于一维表转为二维表二维表转为一维列表等说法,那么,什么是“一维表”、“二维表”呢? A:从数据库的观点来说,一维表是最合适于透视和数据分析的数据存储结构。 很多人容易将它与一维数组、二维...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 224,328
精华内容 89,731
关键字:

二维表结构是