下面是利用组合模式代替递归的一个样本,简单写了一下,并不一定符合组合模式的结构,但汲取了组合模式的思想,如果有表达不对的地方,欢迎拍砖!!
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 版权 (c) 2010
* 保留所有权利。
*/
/**
* 描述:
*
* @author guosl
* 创建时间:Nov 2, 2010
*/
@SuppressWarnings("unchecked")
class Data{
public static HashMap data = new HashMap();
static{
HashMap a = new HashMap();
HashMap b = new HashMap();
HashMap c = new HashMap();
HashMap d = new HashMap();
a.put("b", b);
b.put("c", c);
a.put("d", d);
c.put("aaaaa", "aaaaaa");
c.put("bbbbb", "bbbbbb");
d.put("fffff", "ffffff");
d.put("ggggg", "gggggg");
data.put("a", a);
}
}
@SuppressWarnings("unchecked")
class MyNode{
private String key ;
private int level;
private HashMap parent;
public MyNode(String key,int level,HashMap parent){
this.key = key;
this.level = level;
this.parent = parent;
}
public void show(){
Object o = parent.get(key);
if (o instanceof HashMap){
HashMap temp = (HashMap)o;
Set list = temp.entrySet();
Iterator it = (Iterator) list.iterator();
for(;it.hasNext();){
Map.Entry entry = (Map.Entry)it.next();
MyNode node = new MyNode((String)entry.getKey(),this.level+1,temp);
node.show();
}
}else{
for(int i = 0 ; i < level ;i++){
System.out.print("-");
}
System.out.println(o);
}
}
}
public class NodeTest {
public static void main(String[] args){
MyNode node = new MyNode("a",0,Data.data);
node.show();
}
}
分享到:
相关推荐
- **定义**: Composite模式将对象组合成树形结构以表示“部分-整体”的层次结构。 - **目的**: 使得用户对单个对象和组合对象的使用具有一致性。 - **应用场景**: 用户想表示对象的部分整体层次;希望用户忽略组合...
10. **效率优化**:了解如何减少时间复杂度和空间复杂度,比如使用迭代代替递归、优化循环结构、使用适当的数据结构等。 通过深入学习和实践这些知识点,不仅可以提高编程技能,还能培养解决问题的逻辑思维能力,...
它是基于一种称为正则理论的数学概念,主要利用非确定有穷自动机(NDFA)和确定性有限状态机(DFA)来实现。 在正则表达式的实现原理中,解析阶段首先将用户提供的正则表达式转化为内部表示,通常是NDFA。NDFA是一...
在计算机科学中,杨辉三角常用于演示递归算法、组合数学以及位运算的概念。它的行可以表示为二项式系数,对于计算幂次的组合数有重要应用。 **IBM Semeble语言实现杨辉三角** 编写IBM汇编语言程序来生成杨辉三角,...
因此,了解如何优化算法性能,如减少冗余计算、使用迭代代替递归、利用数据结构特性等,是获得高分的关键。 10. **多语言实现**:虽然LeetCode支持多种编程语言,但每种语言都有其特点和优势。理解不同语言的特性和...
10. **优化技巧**:包括时间复杂度和空间复杂度的优化,如使用迭代代替递归、记忆化搜索、滑动窗口等。 通过阅读和实践这份笔记,开发者不仅能加深对算法和数据结构的理解,还能提升代码质量,为面试和实际工作中的...
位运算是计算机底层操作,对优化算法性能有重要作用,例如在解决空间限制问题时,位运算可以有效地代替常规的算术运算。 这个项目是一个极好的实践平台,通过阅读和实现代码,你可以深入理解各种算法,提升编程...
13. **递归组件**:递归组件是指可以自我调用的组件,通常用于构建树形结构或无限循环列表。 14. **Vue 响应式系统**:Vue 实现响应式系统是基于数据劫持和发布订阅模式,使用Object.defineProperty拦截数据访问和...
- 结构化绑定(Structured Binding):这一特性允许开发者从组合数据类型(如std::pair、std::tuple)中提取多个值,并直接赋值给多个变量,这使得代码更为简洁且可能降低运行时开销。 - 折叠表达式(Fold ...
在描述中提到的"参考模板",意味着这是一个供学习和参考的资料,包含了过去竞赛中成功解决问题的代码模式,可以帮助参赛者提升解题效率和代码质量。 标签为"安全",这可能意味着模板中包含了关于安全编程的一些指导...
作者在实现代码时,不仅追求正确性,还关注性能优化,如使用迭代代替递归、减少不必要的内存分配等。 6. **代码风格与注释**:良好的代码风格和清晰的注释可以提高代码的可读性和可维护性。在这个项目中,作者的...
优化技巧包括减少不必要的计算、使用迭代代替递归、利用位运算等。 四、实战经验与代码风格 通过分析"leetcode-solutions-master"中的代码,我们可以学习到如何将上述理论知识应用于实际问题,同时也能了解到良好...
2.19 实现一个简单的递归下降分析器:通过编程构建一个简单的语法分析器。 2.20 字节字符串上的字符串操作:在Python3中字节串和字符串是不同的类型,处理字节串时的特别方法。 第三章:数字日期和时间 3.1 数字的...
7. **效率优化**:如何减少时间复杂度和空间复杂度,如使用迭代代替递归,或者利用位运算优化循环。 8. **设计模式**:虽然LeetCode主要关注算法,但理解设计模式(如单例模式、工厂模式等)有助于解决实际工程问题...
迭代器与生成器章节讲解了如何手动遍历迭代器、代理迭代、使用生成器创建新的迭代模式、实现迭代器协议、反向迭代、带有外部状态的生成器函数、迭代器切片、跳过可迭代对象的开始部分、排列组合的迭代、序列上索引值...
4.3 使用生成器创建新的迭代模式:利用生成器函数提供惰性迭代模式。 4.4 实现迭代器协议:创建符合迭代器协议的对象。 4.5 反向迭代:逆序迭代序列。 4.6 带有外部状态的生成器函数:编写有状态的生成器。 4.7 迭代...