`
gdwrx_winson
  • 浏览: 131505 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

好的算法

    博客分类:
  • Java
阅读更多

 

用数组代替Map---填入过程

 

public void installEditPolicy(Object key, EditPolicy editPolicy) {
	Assert.isNotNull(key, "Edit Policies must be installed with keys");//$NON-NLS-1$
	if (policies == null) {
		policies = new Object[2];
		policies[0] = key;
		policies[1] = editPolicy;
	} else {
		int index = 0;
		while (index < policies.length && !key.equals(policies[index]))
			index += 2;
		if (index < policies.length) {
			index++;
			EditPolicy old = (EditPolicy)policies[index];
			if (old != null && isActive())
				old.deactivate();
			policies[index] = editPolicy;
		} else {
			Object newPolicies[] = new Object[policies.length + 2];
			System.arraycopy(policies, 0, newPolicies, 0, policies.length);
			policies = newPolicies;
			policies[index] = key;
			policies[index + 1] = editPolicy;
		}
	}
	
	if (editPolicy != null) {
		editPolicy.setHost(this);
		if (isActive())
			editPolicy.activate();
	}
}

 

 

 

用数组代替Map---获取过程

 

public EditPolicy getEditPolicy(Object key) {
	if (policies != null)
		for (int i = 0; i < policies.length; i += 2) {
			if (key.equals(policies[i]))
				return (EditPolicy) policies[i + 1];
		}
	return null;
}
 

 

ModelEditPart存在着一一对应的关系,同步功能

protected void refreshChildren() {
	int i;
	EditPart editPart;
	Object model;

	Map modelToEditPart = new HashMap();
	List children = getChildren();

	for (i = 0; i < children.size(); i++) {
		editPart = (EditPart)children.get(i);
		modelToEditPart.put(editPart.getModel(), editPart);
	}

	List modelObjects = getModelChildren();

	for (i = 0; i < modelObjects.size(); i++) {
		model = modelObjects.get(i);

		//Do a quick check to see if editPart[i] == model[i]
		if (i < children.size()
			&& ((EditPart) children.get(i)).getModel() == model)
				continue;

		//Look to see if the EditPart is already around but in the wrong location
		editPart = (EditPart)modelToEditPart.get(model);

		if (editPart != null)
			reorderChild (editPart, i);
		else {
			//An editpart for this model doesn't exist yet.  Create and insert one.
			editPart = createChild(model);
			addChild(editPart, i);
		}
	}
	List trash = new ArrayList();
	for (; i < children.size(); i++)
		trash.add(children.get(i));
	for (i = 0; i < trash.size(); i++) {
		EditPart ep = (EditPart)trash.get(i);
		removeChild(ep);
	}
}
 

存在接口EditPart,定义addNotify方法

采用多态来实现递归调用---EditPart实现类在实现addNotify方法时候需要递归遍历其children,使它们也进行addNotify动作。

public void addNotify() {
	register();
	createEditPolicies();
	List children = getChildren();
	for (int i = 0; i < children.size(); i++)
		((EditPart)children.get(i))
			.addNotify();
	refresh();
}
 
分享到:
评论

相关推荐

    角点检测的很好算法(c的算法)

    角点检测的很好算法角点检测的很好算法角点检测的很好算法角点检测的很好算法角点检测的很好算法

    数据结构与算法笔记.pdf

    在这份笔记中,我们将详细介绍算法的五个特性、算法设计的要求、算法效率评判、算法时间复杂度的渐进表示法、算法时间复杂度定义、算法时间效率的比较、渐进空间复杂度、设计好算法的过程、线性表的定义和特点、...

    组合数学及其算法

    第一章 引论 1.1 组合数学研究的对象 1.2 组合问题典型实例 1.2.1 分派问题 1. 2.2 染色问题 ...11.12 好算法、坏算法和np类问题 11.13 npc类问题 11.14 货郎问题的近似解 习 题... 参考文献

    算法设计例子—键盘杀手

    3. **好算法**:这意味着算法具有高效性、可扩展性和实用性,能够在实际场景中表现出良好的性能。 4. **字母重复计数**:这是算法的一个具体操作,可能涉及到统计字符串中每个字母出现的次数,这对于文本分析、密码...

    广工 算法设计与分析试卷

    同时,掌握好算法的分析方法,不仅能提高解题速度,也能帮助理解算法的本质,从而更好地应对实际问题。对于广东工业大学的学生而言,这份试卷不仅是一次考试,更是对算法理论和实践能力的全面检验。

    java 算法 经典算法 好的算法

    算法 冒泡等 java 算法 经典算法 好的算法 程序员必读

    灰狼优化算法和粒子群优化算法比较

    标题中的“灰狼优化算法和粒子群优化算法比较”指的是在优化问题中,对两种流行的启发式算法——灰狼优化算法(Grey Wolf Optimizer, GWO)与粒子群优化算法(Particle Swarm Optimization, PSO)的性能进行分析和...

    首次适应算法 最佳适应算法 循环首次适应算法 

    同时,配合流程图可以直观地看到算法的执行过程,帮助我们更好地掌握其工作原理。 在实践中,选择哪种算法取决于具体的应用场景和性能需求。例如,对于内存资源紧张的嵌入式系统,可能更倾向于使用最佳适应算法来...

    算法心得:高效算法的奥秘.docx

    此外,高效算法还可以帮助我们更好地理解和解决现实世界中的问题,例如,优化算法可以帮助我们找到最优解决方案,为物流、交通等领域的发展提供有效支持。 然而,高效算法也存在着一些局限性和挑战。首先,高效算法...

    BM算法 N-BOX算法

    在编程实现BM算法或N-BOX算法时,通常需要编写一个函数来处理好后缀规则和坏字符规则,并结合这两个规则动态调整匹配的起始位置。文件"BmMatch"可能包含了BM算法或N-BOX算法的具体实现代码,通过阅读和理解这些代码...

    漫画算法2:小灰的算法进阶.pptx

    这些案例不仅让读者更好地理解了算法的应用,也让读者思考如何在实际工作中应用算法来解决实际问题。 《漫画算法2:小灰的算法进阶》是一本生动有趣、内容丰富、注重实践的算法进阶图书。通过小灰和他的朋友们的...

    正则好算法

    用于MATLAB实现的正则化算法,算法采用软填充算法,简单,易懂,实用。在矩阵运算中有很大用途

    基于遗传算法任务调度算法

    【基于遗传算法任务调度算法】是一种优化方法,用于解决复杂问题中的任务分配和调度问题。在本项目中,这个算法是用MATLAB编程语言实现的,特别...通过理解并优化这些算法,我们可以更好地解决实际工程中的调度难题。

    基于matlab实现的RRT算法、双向RRT算法、A*算法、PRM、模糊路径规划算法、遗传算法路径规划

    在路径规划问题中,遗传算法可以生成一组路径作为初始种群,然后通过选择、交叉和变异操作进化种群,以求得更好的路径。遗传算法适用于处理多目标和约束优化问题,但可能需要大量的计算资源。 在MATLAB中实现这些...

    社区划分算法的python3实现, 包括KL算法、 COPAR、Louvain 算法、LFM算法、InfoMap算法等

    在这个Python3实现的压缩包中,包含了多种社区划分算法,包括KL算法、COPAR、Louvain算法、LFM算法以及InfoMap算法。这些算法各有特点,下面我们将详细探讨它们的原理和应用。 1. KL算法(Kernighan-Lin算法): ...

    新型群智能优化算法(matlab实现)——烟花算法、粒子群算法、蚁群算法

    这些算法在实际应用中各有优势,例如,烟花算法在处理多模态优化问题上有很好的表现,粒子群优化算法适用于连续函数优化,蚁群算法在图最优化问题上表现出色,而免疫算法则在处理复杂、非线性问题时有独特优势。...

    贝叶斯网络学习算法――k2算法

    K2算法考虑了模型复杂性,因此在防止过拟合方面表现较好;然而,由于其迭代性质,可能会陷入局部最优,尤其是在大型网络中。此外,K2算法对初始结构敏感,不同的起始配置可能导致不同的结果。 在实际应用中,我们...

    LMS算法和NLMS算法的性能比较

    总的来说,LMS和NLMS算法都是解决线性预测问题的有效方法,而NLMS算法由于其自适应性,在某些场景下具有更好的性能。在实际应用中,根据具体需求选择合适的算法至关重要。通过MATLAB这样的工具,我们可以直观地理解...

    图解算法 很好的高清电子版pdf

    图解算法 很好的高清电子版pdf

    页面置换算法(FIFO算法,LRU算法)

    但是,LRU算法的性能要比FIFO算法好,因为LRU算法可以更好地适应实际情况。 五、 实验心得 通过这次实验,我们进一步了解了页面置换算法的原理和实现细节,并且加深了对理论学习的理解。我们也了解了FIFO算法和LRU...

Global site tag (gtag.js) - Google Analytics