场景:
String[][]arr1=new String[3][]; arr1[0]=new String[]{"a","[^a]"}; arr1[1]=new String[]{"b","[^b]"}; arr1[2]=new String[]{"c","[^c]"};
把arr1[0],arr1[1],arr1[2] 进行组合,组合的规则:
(1){"a","[^a]"} X {"b","[^b]"} X{"c","[^c]"}
(2)组合的结果中必须同时有arr1[0],arr1[1],arr1[2]中的一个元素.
比如"abc"就是正确的,a[^b]b就是错误的,因为a[^b]b没有{"c","[^c]"}中的元素.
"acb"是错误的,因为没有按顺序
/*** * * @param a * @param aa * @param index : 初始值为0 */ public static List<StringBuffer> cc(String[][] aa,int index,List<StringBuffer> list){ if(index>=aa.length){//说明已经遍历完成 return list;//并不是每次循环都会执行,最后才会执行此语句. } String cc[]=aa[index]; int length=cc.length; List<StringBuffer> listNew=new ArrayList<StringBuffer>(); if(list==null||list.size()==0){//首次循环 for(int i=0;i<length;i++){ listNew.add(new StringBuffer(cc[i])); } }else{ for(int i=0;i<length;i++){ for(int j=0;j<list.size();j++){ StringBuffer sb=list.get(j); StringBuffer sb2=new StringBuffer(sb); sb2.append(cc[i]); listNew.add(sb2); } } } List<StringBuffer> list33=cc(aa, ++index, listNew); if(!ValueWidget.isNullOrEmpty(list33)){ return list33; } return null; } /*** * 组合 * @param aa * @return */ public static List<StringBuffer>assemble(String[][] aa){ return cc(aa, 0, null); }
测试1:
@Test public void tset_cc(){ String[][]arr1=new String[3][]; arr1[0]=new String[]{"a","[^a]"}; arr1[1]=new String[]{"b","[^b]"}; arr1[2]=new String[]{"c","[^c]"}; List<StringBuffer> list=assemble(arr1); System.out.println(list.size()); System.out.println(list); }
测试结果:
8 [abc, [^a]bc, a[^b]c, [^a][^b]c, ab[^c], [^a]b[^c], a[^b][^c], [^a][^b][^c]]
测试2:
@Test public void tset_cc2(){ String[][]arr1=new String[3][]; arr1[0]=new String[]{"a"}; arr1[1]=new String[]{"b"}; arr1[2]=new String[]{"c"}; List<StringBuffer> list=assemble(arr1); System.out.println(list.size()); System.out.println(list); }
测试结果:
1 [abc]
测试3:
@Test public void tset_cc2(){ String[][]arr1=new String[2][]; arr1[0]=new String[]{"a","1","one"}; arr1[1]=new String[]{"b","2","two"}; // arr1[2]=new String[]{"c","3"}; List<StringBuffer> list=assemble(arr1); System.out.println(list.size()); System.out.println(list); }
测试结果:
9 [ab, 1b, oneb, a2, 12, one2, atwo, 1two, onetwo]
相关推荐
以下是一个简单的Java组合模式的例子: ```java // Component接口 public interface Component { void operation(); } // Composite类,树枝节点 public class Composite implements Component { private List...
### Java组合算法详解 在Java编程语言中,组合算法是一种常用的数据处理方法,尤其是在需要从一组数据中选取特定数量元素的场景下。本篇文章将基于提供的代码片段来深入探讨组合算法的基本原理、实现方式以及其背后...
本组合包“java 组合包.rar”提供的是JDK11的安装包和Eclipse集成开发环境的安装包,这对于初学者来说是一份非常实用的资源。 首先,让我们详细了解一下JDK11。JDK11是Oracle公司于2018年9月发布的长期支持(LTS)...
在Java中,组合模式的应用可以帮助我们构建部分-整体的层次结构,使得客户端可以一致地处理单个对象和对象集合。这种模式将树形结构视为单一对象,简化了客户端代码。 组合模式的核心思想是“部分-整体”的抽象,它...
在Java编程中,组合(Composition)是一种设计模式,它允许我们把对象组织成树状层次结构,这样子对象可以被视为单个单元。这种模式强调"部分-整体"的关系,是面向对象设计的基本原则之一。本篇文章将深入探讨Java中...
在Java中,类的组合是一种重要的概念,它允许我们构建更复杂、更丰富的对象模型,能够反映现实世界中的复杂关系。通过类的组合,可以将基本类型、基本类型的类、以及自定义的类通过创建新的类进行组合,实现功能和...
### Java编写的组合模式例子:建造一个工厂 #### 一、引言 组合模式(Composite Pattern)是一种结构型设计模式,允许将对象组合成树形结构,并以一致的方式处理单个对象与组合对象。该模式使得客户端代码可以一致...
综上所述,组合模式在Java开发中是一种非常实用的设计模式,通过它我们可以构建灵活且易于维护的对象结构。在TestComposite这个例子中,我们可以预期看到如何在实际代码中运用这些概念来构建和操作一个组合结构。
本篇将详细讲解Java中的组合式异步编程方法,特别是从Java 7到Java 8的演变以及如何利用Future和CompletableFuture API来实现异步计算。 首先,日志代码的优化是一个很好的实践,它通过条件判断避免了不必要的计算...
本篇将深入探讨如何在Java中实现组合计算。 组合计算,也称为组合或二项式系数,是数学中的一个概念,它表示在没有重复的情况下,从n个不同元素中选取k个元素的方法数量。其计算公式通常用C(n, k)或"n choose k...
在Java设计模式中,组合模式通常包括以下几个主要组件: 1. **抽象组件(Component)**:定义了公共接口,供叶子节点和组合节点共享。在五子棋的场景下,这个抽象组件可能是`ChessBoardElement`,提供放置棋子、检查...
在Java编程语言中,将两张图片合成在一起是一个常见的图像处理任务。这个过程涉及到对图像文件的读取、处理以及合并,通常使用Java的内置库如`java.io`和`javax.imageio`。在这个场景中,`FileInputStream`用于读取...
java设计模式【之】组合模式【源码】【场景:遍历目录树】 * 组合模式 * 将对象组合成树结构,表示 “部分与整体” 的关系 * 要求 部分与整体,具备相同的父类 * * 代码实现 * 输出当前目录下,全部目录层级...
本文将深入探讨如何在Java中实现排列组合,特别是基于描述中提到的"利用list及set的无序性"的方法。 首先,让我们理解排列和组合的基本概念。排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列...
Java 组合模式 Java 组合模式是一种结构型设计模式,让客户端代码可以统一地处理简单元素和复杂元素,以提高代码的灵活性和可维护性。该模式的主要思想是将简单元素和复杂元素统一处理,使客户端代码可以不区分它们...
本文将深入探讨Java开发中的快捷键设置,尤其是那些真正实用的组合键。 首先,我们要明白快捷键的基本概念。快捷键是由一个或多个键盘按键组成的组合,当按下这些按键时,可以触发特定的操作,例如执行命令、切换...
在Java编程语言中,组合框(ComboBox)是用户界面(UI)设计中不可或缺的一部分,它为用户提供了一种从预定义选项中选择一个值的方式。在本案例“组合框应用实例”中,我们将深入探讨如何在Java程序设计中有效利用...
HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...
JAVA组合模式的用法: 在JAVA中,可以使用组合模式来实现树形结构的管理。例如,可以使用抽象类Firm来定义公司的结构,然后使用BranchFirm类来实现分公司的结构,使用MarketDepartment类来实现公司市场部的结构。 ...
组合数学 - 程序员的高数,感兴趣的人看一下吧