`
szgaea
  • 浏览: 216562 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用组合模式代替递归

阅读更多
下面是利用组合模式代替递归的一个样本,简单写了一下,并不一定符合组合模式的结构,但汲取了组合模式的思想,如果有表达不对的地方,欢迎拍砖!!
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汇编语言程序来生成杨辉三角,...

    leetcode答案-leetcode:leetcode答案

    因此,了解如何优化算法性能,如减少冗余计算、使用迭代代替递归、利用数据结构特性等,是获得高分的关键。 10. **多语言实现**:虽然LeetCode支持多种编程语言,但每种语言都有其特点和优势。理解不同语言的特性和...

    谷歌师兄的leetcode刷题笔记-shorthand3:速记3

    10. **优化技巧**:包括时间复杂度和空间复杂度的优化,如使用迭代代替递归、记忆化搜索、滑动窗口等。 通过阅读和实践这份笔记,开发者不仅能加深对算法和数据结构的理解,还能提升代码质量,为面试和实际工作中的...

    Go-算法学习Golang版

    位运算是计算机底层操作,对优化算法性能有重要作用,例如在解决空间限制问题时,位运算可以有效地代替常规的算术运算。 这个项目是一个极好的实践平台,通过阅读和实现代码,你可以深入理解各种算法,提升编程...

    Vue 面试训练营总结文档

    13. **递归组件**:递归组件是指可以自我调用的组件,通常用于构建树形结构或无限循环列表。 14. **Vue 响应式系统**:Vue 实现响应式系统是基于数据劫持和发布订阅模式,使用Object.defineProperty拦截数据访问和...

    C++ High Performance

    - 结构化绑定(Structured Binding):这一特性允许开发者从组合数据类型(如std::pair、std::tuple)中提取多个值,并直接赋值给多个变量,这使得代码更为简洁且可能降低运行时开销。 - 折叠表达式(Fold ...

    acm竞赛模板.pdf

    在描述中提到的"参考模板",意味着这是一个供学习和参考的资料,包含了过去竞赛中成功解决问题的代码模式,可以帮助参赛者提升解题效率和代码质量。 标签为"安全",这可能意味着模板中包含了关于安全编程的一些指导...

    My_LeetCode:记录自己的一些LeeCode代码!

    作者在实现代码时,不仅追求正确性,还关注性能优化,如使用迭代代替递归、减少不必要的内存分配等。 6. **代码风格与注释**:良好的代码风格和清晰的注释可以提高代码的可读性和可维护性。在这个项目中,作者的...

    leetcode-solutions

    优化技巧包括减少不必要的计算、使用迭代代替递归、利用位运算等。 四、实战经验与代码风格 通过分析"leetcode-solutions-master"中的代码,我们可以学习到如何将上述理论知识应用于实际问题,同时也能了解到良好...

    Python3高级教程

    2.19 实现一个简单的递归下降分析器:通过编程构建一个简单的语法分析器。 2.20 字节字符串上的字符串操作:在Python3中字节串和字符串是不同的类型,处理字节串时的特别方法。 第三章:数字日期和时间 3.1 数字的...

    谷歌师兄的leetcode刷题笔记-ITS-MAGNUM-DONG-TIME:它的magnummmmmmmmmmmmmdong时间

    7. **效率优化**:如何减少时间复杂度和空间复杂度,如使用迭代代替递归,或者利用位运算优化循环。 8. **设计模式**:虽然LeetCode主要关注算法,但理解设计模式(如单例模式、工厂模式等)有助于解决实际工程问题...

    《PythonCook》

    迭代器与生成器章节讲解了如何手动遍历迭代器、代理迭代、使用生成器创建新的迭代模式、实现迭代器协议、反向迭代、带有外部状态的生成器函数、迭代器切片、跳过可迭代对象的开始部分、排列组合的迭代、序列上索引值...

    《Python Cookbook》第三版繁體中文

    4.3 使用生成器创建新的迭代模式:利用生成器函数提供惰性迭代模式。 4.4 实现迭代器协议:创建符合迭代器协议的对象。 4.5 反向迭代:逆序迭代序列。 4.6 带有外部状态的生成器函数:编写有状态的生成器。 4.7 迭代...

Global site tag (gtag.js) - Google Analytics