精华内容
下载资源
问答
  • 设计模式 - 结构型设计模式 - 组合模式(Java)

    万次阅读 多人点赞 2019-02-03 11:44:16
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 组合模式用于表示具有... 这说的其实就是组合模式,这种简单的模式就不做过多介绍了。

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

    组合模式用于表示具有层次结构的数据,使得我们对单个对象和组合对象的访问具有一致性。

    直接看一个例子吧,每个员工都有姓名、部门、薪水这些属性,同时还有下属员工集合(虽然可能集合为空),而下属员工和自己的结构是一样的,也有姓名、部门这些属性,同时也有他们的下属员工集合。

    public class Employee {
    
        private String name;
        private String dept;
        private int salary;
        private List<Employee> subordinates; // 下属
    
        public Employee(String name, String dept, int sal) {
            this.name = name;
            this.dept = dept;
            this.salary = sal;
            subordinates = new ArrayList<Employee>();
        }
    
        public void add(Employee e) {
            subordinates.add(e);
        }
    
        public void remove(Employee e) {
            subordinates.remove(e);
        }
    
        public List<Employee> getSubordinates(){
            return subordinates;
        }
    
        public String toString(){
            return ("Employee :[ Name : " + name + ", dept : " + dept + ", salary :" + salary+" ]");
        }
       
    }

    通常,这种类需要定义 add(node)、remove(node)、getChildren() 这些方法。

    这说的其实就是组合模式,这种简单的模式就不做过多介绍了。

    展开全文
  • 组合模式

    千次阅读 2019-09-25 20:43:06
    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的...

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

    这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

    我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。

    介绍

    意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

    主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

    何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

    如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。

    关键代码:树枝内部组合该接口,并且含有内部属性 List,里面放 Component。

    应用实例 :1、算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作数、操作符和另一个操作数。 2、在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。

    优点 :1、高层模块调用简单。 2、节点自由增加。

    缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

    **使用场景:**部分、整体场景,如树形菜单,文件、文件夹的管理。

    注意事项:定义时为具体类。

    实现

    我们有一个类 Employee,该类被当作组合模型类。CompositePatternDemo,我们的演示类使用 Employee 类来添加部门层次结构,并打印所有员工。
    组合模式

    步骤 1

    创建 Employee 类,该类带有 Employee 对象的列表。

    Employee.java

    public class Employee {
    
        private String name;
        private String dept;
        private int salary;
        private List<Employee> subordinates;
    
        public Employee(String name, String dept, int salary) {
            this.name = name;
            this.dept = dept;
            this.salary = salary;
            this.subordinates = new ArrayList<Employee>();
        }
    
        public void add(Employee e) {
            subordinates.add(e);
        }
    
        public void remove(Employee e) {
            subordinates.remove(e);
        }
    
        public List<Employee> getSubordinates() {
            return subordinates;
        }
    
        @Override
        public String toString() {
            return ("Employee :[ Name : " + name
                    + ", dept : " + dept + ", salary :"
                    + salary + " ]");
        }
    
    }
    

    步骤 2

    使用 Employee 类来创建和打印员工的层次结构。

    CompositePatternDemo.java

    public class CompositePatternDemo {
    
        public static void main(String[] args) {
            Employee CEO = new Employee("John", "CEO", 30000);
    
            Employee headSales = new Employee("Robert", "Head Sales", 20000);
    
            Employee headMarketing = new Employee("Michel", "Head Marketing", 20000);
    
            Employee clerk1 = new Employee("Laura", "Marketing", 10000);
            Employee clerk2 = new Employee("Bob", "Marketing", 10000);
    
            Employee salesExecutive1 = new Employee("Richard", "Sales", 10000);
            Employee salesExecutive2 = new Employee("Rob", "Sales", 10000);
    
            CEO.add(headSales);
            CEO.add(headMarketing);
    
            headSales.add(salesExecutive1);
            headSales.add(salesExecutive2);
    
            headMarketing.add(clerk1);
            headMarketing.add(clerk2);
    
            //打印该组织的所有员工
            System.out.println(CEO);
            for (Employee headEmployee : CEO.getSubordinates()) {
                System.out.println(headEmployee);
                for (Employee employee : headEmployee.getSubordinates()) {
                    System.out.println(employee);
                }
            }
        }
    
    }
    

    步骤 3

    验证输出。

    Employee :[ Name : John, dept : CEO, salary :30000 ]
    Employee :[ Name : Robert, dept : Head Sales, salary :20000 ]
    Employee :[ Name : Richard, dept : Sales, salary :10000 ]
    Employee :[ Name : Rob, dept : Sales, salary :10000 ]
    Employee :[ Name : Michel, dept : Head Marketing, salary :20000 ]
    Employee :[ Name : Laura, dept : Marketing, salary :10000 ]
    Employee :[ Name : Bob, dept : Marketing, salary :10000 ]
    
    展开全文
  • 排列组合 交叉组合 组合排列算法

    千次阅读 2018-06-19 11:41:31
    20180619一,交叉组合排列算法:1、前言:在项目开发的过程中负责全系统查询检索的一个模块,其中有一个查询方式叫做“交叉组合查询”,与数学中的排列组合类似,因此就开始想看一下这个该怎么写,以下为本人原创...
    20180619
    一,交叉组合排列算法:
    1、前言:
    在项目开发的过程中负责全系统查询检索的一个模块,其中有一个查询方式叫做“交叉组合查询”,与数学中的排列组合类似,因此就开始想看一下这个该怎么写,以下为本人原创文章,转载请标明出处: https://blog.csdn.net/RobinsStruggle,本人自定为java菜鸟,如有问题指出请指教,不胜感激!
    2、模型(例题):
    现有A、B、C三组球,每组数量不相同,需要在A、B、C中每组一次拿出一个球,拿出的不能与之前拿出的相等:
    A:a1、a2、a3;
    B:b1、b2;
    C:c1、c2、c3、c4;
    如果使用数学那么很快就可以得出结论,如果通过简单代码去实现这一步骤的话那么可用的代码为:
    public static void main(String[] args) {
    List<String> dataList4A = new ArrayList<String>();
    dataList4A.add("a1");
    dataList4A.add("a2");
    dataList4A.add("a3");

    List<String> dataList4B = new ArrayList<String>();
    dataList4B.add("b1");
    dataList4B.add("b2");

    List<String> dataList4C = new ArrayList<String>();
    dataList4C.add("c1");
    dataList4C.add("c2");
    dataList4C.add("c3");
    dataList4C.add("c4");

    for (String dataSon4A : dataList4A) {
    for (String dataSon4B : dataList4B) {
    for (String dataSon4C : dataList4C) {
    System.out.println(dataSon4A + dataSon4B + dataSon4C);
    }
    }
    }
    }
    3、扩展:
    上面的代码或者思维大概能够满足日常开发需求了,当时该想法还是不符合系统要求,因为系统查询条件的组数也就是说上个例子中球的组数是不确定的,那么如果使用上述的方法去实现的话似乎不太可能,而且极度不灵活,那么能不能开发一个工具类去进行根据传入的组数以及组数据去进行交叉排列组合呢?
    刚开始的时候我也是顺着前面所述的思路进行思考的,后来发现可行性不大,所以就开始慢慢摸索这个交叉排列组合的可编程化的规则,于是通过整理发现了一个规则,此处献上我的草稿:

    于是通过代码实现,并且封装成了工具类,就有了以下的代码:
    排列算法实体类:CombinationEntity.java

    排列算法操作类:CombinationPeration.java


    该两个算法文件可进行下载(想赚点C币哈哈哈哈,两个C币,望谅解!): https://download.csdn.net/download/robinsstruggle/10485775
    展开全文
  • excel组合工具使用

    万次阅读 2021-05-06 13:49:37
    数据-组合,数据-取消组合 有时候表格数据较多,方便查看 使用组合工具比较方便查看 方法: 选中需要组合的行和列 再点 数据-组合即可如下图 通过“+”号和“-”号来展开和隐藏数据 若要取消组合 先中需要取消的...

    数据-组合,数据-取消组合
    有时候表格数据较多,方便查看 使用组合工具比较方便查看
    方法:
    选中需要组合的行和列 再点 数据-组合即可如下图
    在这里插入图片描述
    通过“+”号和“-”号来展开和隐藏数据

    若要取消组合 先中需要取消的组合的行和列,再点数据-取消组合
    在这里插入图片描述

    展开全文
  • 一、十一个组合恒等式 、 二、组合恒等式 证明方法 、 三、组合数 求和 ∑ 方法
  • python 实现组合以及全组合

    万次阅读 2018-07-03 22:36:02
    数学中的组合概念是:从 n 个元素中不放回的取出 m 个元素组成一个组合(不考虑顺序),组合数是所有可能产生的组合的种数本列通过 26 个小写字母来演示组合的代码如下:def combination_k(s, k):  '''  字符...
  • Java计算组合数以及生成组合排列

    万次阅读 多人点赞 2018-11-24 00:28:29
    组合数计算 公式法 逐个相除法(错误) 逐个相除法修正版 素数幂乘法 基本公式法 平方差连乘法 组合恒等法 简单递归法 杨辉三角法 杨辉三角优化法 二进制法 组合数计算小结 获取数组的组合排列 二进制法...
  • 波段组合批处理 Landsat波段组合 加载需要处理的影像 选择波段组合顺序 点击“处理”按钮,等待处理完成 Sentinel-2波段组合 加载数据 选择波段组合顺序 点击“处理”按钮,等待处理完成 珠海一号辐射定标...
  • 组合数学 —— 组合

    千次阅读 2019-03-23 16:36:39
    如果两个组合中,至少有一个元素不同,它们就被认为是不同的组合。 2.不可重组合数 所有不同组合的个数,叫做组合数,记作:或 由于每一种组合都可以扩展到 r!种排列,而总排列为 A(n,r) ,所以组合数 特别的,...
  • 捕获组合键 键盘组合

    千次阅读 2017-12-24 11:33:54
    捕获组合键 键盘组合键 VC++
  • 组合c的计算公式

    万次阅读 2021-08-15 13:15:57
    概率组合C(m,n)的计算公式为: 举例: 扩展资料: 从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同...
  • 组合实体模式

    千次阅读 2019-09-25 20:05:20
    组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理...
  • 从惯导卫导数据轨迹产生,然后将轨迹数据用以产生陀螺仪和加速度计数据,然后用陀螺仪和加速度计数据进行惯导解算并验证仿真的陀螺仪和加速度数据的有效性,之后用仿真的GPS和INS数据做松组合
  • 模拟淘宝产品SKU信息的组合添加规格组合
  • C++ 组合模式

    千次阅读 热门讨论 2017-05-05 20:01:41
    组合模式对单个对象(即:叶子构件)和组合对象(即:容器构件)的使用具有一致性,组合模式又被称为“整体-部分”(Part-Whole)模式,属于对象结构型模式。 简述 模式结构 透明组合模式和安全组合模式 优缺点 ...
  • 在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合性依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强...
  • 组合问题

    万次阅读 2019-03-22 21:46:02
    组合 如果不是求字符的所有排列,而是求字符的所有组合应该怎么办呢?还是输入三个字符 a、b、c,则它们的组合有abcabacbcabc。当然我们还是可以借鉴全排列的思路,利用问题分解的思路,最终用递归解决。不过这里...
  • 组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合数学第3版组合...
  • Python3对多股票的投资组合进行分析

    万次阅读 多人点赞 2019-04-21 10:45:27
    二、投资组合的收益计算 1、给定权重的投资组合 2、等权重的投资组合 3、市值加权的投资组合 三、投资组合的相关性分析 1、投资组合的相关矩阵 2、投资组合的协方差矩阵 3、投资组合的标准差 四、探索股票的...
  • 排列组合公式/排列组合计算公式

    千次阅读 2019-12-09 19:53:03
    排列组合公式/排列组合计算公式 公式P是指排列,从N个元素取M个进行排列。 公式C是指组合,从N个元素取M个进行组合,不进行排列。 N-元素的总个数 M参与选择的元素个数 !-阶乘,如9!=9*8*7*6*5*4*3*2*1 ...
  • 组合导航(八):INS/GPS组合导航

    千次阅读 多人点赞 2020-05-14 23:37:53
    INS/GPS组合导航1 误差反馈1.1 开环INS/GPS架构1.2 闭环INS/GPS架构2 组合导航的类型2.1 松耦合 的INS/GPS组合导航2.2 紧耦合 的INS/GPS组合导航2.3 深度耦合的 INS/GPS组合导航3 INS方程的动态误差模型4 松耦合的...
  • python 写 组合两两组合

    千次阅读 2019-01-16 16:39:00
    紧挨着 组合 a b c d ----> ab ,bc ,cd portList = ['a', 'b', 'c', 'd'] for i, p in enumerate(portList): if i == len(portList) - 1: break # p, portList[i + 1] print ...
  • 组合索引

    千次阅读 2018-08-06 11:15:50
    组合索引.顾名思义.既不同于单列索引。  它是组合一个多列的索引。也可以称为多列索引。    以下会讲到几个关键点:(1).组合索引的顺序 (2).组合索引的生效(左前缀原则)  1.先生成一张没有索引的表    2...
  • 差价组合主要有牛市差价、熊市差价和蝶式差价等,差期组合应用的最多的是正向差期组合,混合组合主要有跨式、宽跨式、条式和带式等,投资者需要根据自身的预期以及成本要求等来选择。
  • 可重组合与不相邻组合

    千次阅读 2018-03-12 16:06:06
    可重组合:①A = {1, 2, 3, 4},从集合A中选出5个元素,可以重复,问有多少种不同的组合,例如{1, 2, 2, 3, 4}就算做一种②有r个完全相同的小球,n个不同的盒子,每个盒子可以放任意数量的球,也可以不放,问有多少...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,246,144
精华内容 898,457
关键字:

组合