- 浏览: 438411 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
CmdSmith:
这么构建出来的应该都是完全二叉树吧。。
java实现二叉树的构建以及3种遍历方法 -
haoyuan2012:
非常好,很受益
java实现二叉树的构建以及3种遍历方法 -
haizhiguang:
请问楼主是如何想到 nodeList.get(parent ...
java实现二叉树的构建以及3种遍历方法 -
Angry_Icarus:
赞赞赞
java实现二叉树的构建以及3种遍历方法 -
lilin9043:
刚刚用这个 不会用
UrlRewrite时需要注意的问题:action以及正则表达式
总述:人与动物的最大区别在于对工具的使用。也许你单独的能力不怎么样,但是当你使用了恰当的工具并对周边的相关资源进行了优化配置,那么你不一定是战无不胜的,但至少你会攻无不克。O(∩_∩)O~
由于一直用到容器,每次都用起来很陌生不上手,最近有遇到了,我觉得很有必要把这个家伙干掉了。所以专门拿了一段时间来搞定容器这部分。
参考资料:《ThinkingInJava》
精彩文摘:
1. 即使在Java没有直接的关键字支持,容器类仍旧是可以显著增强你的编程能力的基本工具。 2. Set:能够产生每个元素都唯一的列表时相当有用的功能。 3. Map:将对象映射到其它对象的能力是一种解决编程问题的杀手锏。 4. Map: Map与数组和其他的容器一样,可以很容易地扩展到多维,而我们只需将其值设置为Map(这些Map的值可以是其它容器,甚至是其它Map),因此我们能够很容易的将容器组合起来从而快速的生成强大的数据结构。 5. 使用接口描述的一个理由是它可以使我们能够创建更通用的大妈,通过针对接口而非具体实现来编写代码,我们的代码可以应用于更多的对象类型。 6. Java SE5的重大变化之一:泛型的概念:适用于广泛的类型。 7. 根据我的经验,理解了边界所在你才能成为编程高手,因为只有你知道了某个技术不能做到什么,你才能更好的做到所能做到的。
8. 更多精彩精在ThinkingInJava
下面来看看这个单词频率统计的问题吧。虽然这个问题不关乎生死,但是都没有很好的解决过,当然我确定今天这里的解决办法依然不是一个好的办法,但是就像我的总述所说:至少对工具的使用让我找到了一种解决问题的方法吧。
具体代码:
package mapApp; import java.util.*; public class SortValue { /** * @param args */ public static void main(String[] args) { String str[] = "java java platform is is is is perfect".split(" "); statistics(str); } public static void statistics(String str[]) { Map<String, Integer> m = new HashMap<String, Integer>();// TreeMap输出是有序的 for (int i = 0; i < str.length; i++) { Integer freq = m.get(str[i]); m.put(str[i], freq == null ? 1 : freq + 1); } // 把Map以键值对的形式存入一个可以排序的TreeSet中去 Set<WorkForMap> set = new TreeSet<WorkForMap>(); for (String s : m.keySet()) { set.add(new WorkForMap(s, m.get(s))); } System.out.println("输出形式一:"); System.out.println(set); // 上面的输出显然不是我们需要的噻,那么让我们来改变一种输出方式吧! System.out.println("输出形式二:"); for (Iterator<WorkForMap> it = set.iterator(); it.hasNext();) { WorkForMap w = it.next(); System.out.println("单词:" + w.str + " 出现的次数为: " + w.freq); } // 当然我们可以控制只输出前三名来 System.out.println("输出形式三:"); int count = 1; for (Iterator<WorkForMap> it = set.iterator(); it.hasNext();) { WorkForMap w = it.next(); System.out.println("第" + count + "名为单词:" + w.str + " 出现的次数为: " + w.freq); if (count == 3)// 当输出3个后跳出循环 break; count++; } } } public class WorkForMap implements Comparable<WorkForMap> { String str; Integer freq; public WorkForMap(String str, Integer freq) { this.str = str; this.freq = freq; } public int compareTo(WorkForMap o) { int cmp = freq.intValue() - o.freq.intValue(); return (cmp == 0 ? str.compareTo(o.str) : -cmp); //只需在这儿加一个负号就可以决定是升序还是降序排列 //因为TreeSet会调用WorkForMap的compareTo方法来决定自己的排序 } @Override //因为当我们print的时候,print会调用WorkForMap的toString方法来决定自己的输出 //我们当然可以按照自己的方式来显示输出啦 public String toString() { return str + "出现的次数为:" + freq; } } 输出结果: 输出形式一: [is出现的次数为:4, java出现的次数为:2, perfect出现的次数为:1, platform出现的次数为:1] 输出形式二: 单词:is 出现的次数为: 4 单词:java 出现的次数为: 2 单词:perfect 出现的次数为: 1 单词:platform 出现的次数为: 1 输出形式三: 第1名为单词:is 出现的次数为: 4 第2名为单词:java 出现的次数为: 2 第3名为单词:perfect 出现的次数为: 1
.
评论
2 楼
朗月缠云
2013-06-10
受教了,在工作中享受生活!!
1 楼
ocaicai
2010-11-27
因为WorkForMap已经有了自己的toString方法,所以可以直接打印显示:
Set<WorkForMap> set = new TreeSet<WorkForMap>(); for (String s : m.keySet()) { set.add(new WorkForMap(s, m.get(s))); } System.out.println("输出形式一:"); System.out.println(set); // 上面的输出显然不是我们需要的噻,那么让我们来改变一种输出方式吧! System.out.println("输出形式二:"); for (Iterator<WorkForMap> it = set.iterator(); it.hasNext();) { WorkForMap w = it.next(); System.out.println(w);//System.out.println("单词:" + w.str + " 出现的次数为: " + w.freq); } // 当然我们可以控制只输出前三名来 System.out.println("输出形式三:"); int count = 1; for (Iterator<WorkForMap> it = set.iterator(); it.hasNext();) { WorkForMap w = it.next(); System.out.println("第" + count + "名为单词:" + w);// System.out.println("第" + count + "名为单词:" + w.str + " 出现的次数为: "+ w.freq); if (count == 3)// 当输出3个后跳出循环 break; count++; }
发表评论
-
采用Client/Server模型理解回调callback
2012-04-22 11:38 4414关于回调早就听说过,但是不曾理解过,周日的上午外面阳光灿烂,我 ... -
java源文件夹打包
2012-04-01 12:49 1182有时候我们可能需要修改源文件来适应自己的需求 案 ... -
使用命令行的方式启动Mina
2012-02-29 09:50 0/** * 使用命令行的方式启动Mina ... -
MD5的工具方法使用
2011-12-07 10:33 1655package com.cdl.test; impo ... -
二进制基础(负数转二进制)
2011-10-30 14:49 2213比如,假设有一 int 类型的数,值为5,那么,我们知道它在计 ... -
java.util包的集合框架应用
2011-10-27 23:19 1330package mix.test; import j ... -
对Entity的未用字段进行借鸡下蛋
2011-09-20 15:00 1242. 1.实体 public class Image ... -
不要再困扰在String与StringBuffer(StringBuilder)的区别上鸟
2011-06-29 16:44 1172无论是初学者还是在java ... -
在myeclipse8.5中导出uml类图
2011-06-21 19:59 1490百度一下:myeclipse类图 . http://wenk ... -
用一下UML建模工具Rational Rose以及类图的基本关系
2011-06-09 14:24 10764. 基本的类图关系: 编码实现: packa ... -
统计某一数组中重复数字的次数
2011-04-28 18:15 5701. 今天上谯老师软件项目管理方法与实践课时给出了一个他曾经留 ... -
模仿String.indexOf,判断一个字符串是否包含另一个字符串
2011-04-26 15:42 4313. 目录: 一.方法介绍 二.图示意 三.源代码 一.方法 ... -
在MyEclipse中添加Java、Struts...源码
2011-03-09 15:14 1150三种方法: 第一种: “window”-> " ... -
使用接口的核心原因:为了向上转型为多个基类型,以及由此带来的灵活。
2010-12-01 13:45 1159package thinkingInJava.interf ... -
后台打印在参看程序执行流程中的重要作用
2010-11-15 13:19 1002附注:在每个方法里打印”进入这个方法、方法的名称”,这样 ... -
自定义类中2个元素的比较升级到3个元素的比较
2010-10-28 23:26 1238可以先参考一下前面的一篇文章:为了比较,让自己的类实现Comp ... -
给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
2010-10-26 23:59 2816关于Map.Entry可以参看在容器中使用增强的for循环, ... -
在容器中使用增强的for循环,简洁大气,结构清晰
2010-10-26 21:44 1502除了增强的for循环使代 ... -
求模( Modulus )与求余(Remainder) (转)
2010-10-26 17:37 2463import java.math.BigInteger; ... -
为了比较,让自己的类实现Comparable接口,重写compareTo
2010-10-26 14:56 20800首先需要实现带泛型的Comparable接口,按照自己想要 ...
相关推荐
数字图书馆的概念其实由来已久,随着信息技术的迅猛发展,它已经演变成一个综合性的信息服务体系。数字图书馆不仅仅是一个虚拟的图书馆,它是对传统图书馆服务功能的拓展和延伸。在这个体系中,通过数字技术将传统...
1994年,中国移动通信史上第一个GSM电话由前中国邮电部长吴基传使用诺基亚2110拨通了,中国由此开始进入2G时代。 三、2G时代的特点 2G采用的是数字调制技术,容量增加,系统容量的增加使得2G时代的手机可以上网了...
在PBL中,学生在遇到一个复杂、真实世界的问题时开始学习,而不是先接受传统的授课。这种方法由来已久,被认为能够更有效地提升学生批判性思维、团队合作和自我学习能力。 PBL与案例教学法的区别在于,PBL通常涉及...
"网易云音乐产品分析:竞争由来已久,鹿死谁手还未可知" 本文对网易云音乐产品进行了分析,讨论了当前手机音乐客户端市场的激烈竞争状况。根据 iiMedia Research 数据显示,中国手机音乐客户端行业继续稳步发展,...
感官分析技术是食品行业中一种重要的质量评估方法,它利用人的感觉器官——视觉、嗅觉、味觉、触觉和听觉来评价食品的感官特性,如颜色、香气、味道、质地和声音。这种方法历史悠久,随着消费者对食品质量要求的提高...
Target的例子印证了维克托·迈尔-舍恩伯格提过的一个很有指导意义的观点:通过找出一个关联物并监控它,就可以预测未来。Target通过监测购买者购买商品的时间和品种来准确预测顾客的孕期,这就是对数据的二次利用的...
4. 选取一个或几个实际问题场景,运用所学知识和技能开发出能够解决问题的算法程序。 5. 运用算法程序解决实际问题,进行实验验证,分析结果并撰写论文。 三、论文大纲 论文的主要内容包括以下几个方面: 1. 最短...
设计模式作为软件工程领域的一个核心概念,指的是解决特定问题时的一种通用解决方案。虽然设计模式的概念由来已久,但它们仍然是软件开发中最热门的话题之一,为开发者提供了解决日常遇到的问题的有效途径。本书...
可信编译器是编译器研究领域的一个重要分支,它的核心目标是确保编译器自身的正确性,以减少由于编译器错误导致的目标代码出现错误的可能性。可信编译器的设计关注点在于提高编译器的稳定性和可靠性,避免出现编译...
江与城占地 1800 亩拥有1000 亩绿地并规划了 100 多亩教育系统以及 3 万平米的商业街,虽然地处郊区但是业主也丝毫不会感到生活的不便,而且设计有一个艺术中心以及橄榄球场,让业主有足够的休闲空间并且还有依山伴...
总的来说,这次支教实习是一次深刻的人生历练,实习生从中收获了教学技能的提升、对教育事业的热爱以及对农村教育现状的深刻认识。这种实践经验不仅丰富了实习生的个人成长,也为未来的教育工作奠定了坚实的基础。
它的目标不仅是激发对数学的兴趣,更是通过团队合作和解决问题的能力,提升参赛者的综合素养。每年的竞赛包括两天,每天两道题目,总计六道题目,涵盖代数、几何、组合数学和数论等主要数学领域。 对于参与的选手来...
简单来说, Load/Unload 技术有点像老式的点唱机,当盘片转速降低无法再产生空气薄膜的时候,就将磁臂以及磁头旋转一下,停靠到磁盘旁边的一个小斜坡上。这样就完全避免了磁头与盘片的直接接触。 总体来说, Load/...
这一概念由来已久,但在深度学习技术的助力下,风格迁移得以实现突破性的进步,并且成为了深度学习应用中的一个亮点。例如,利用卷积神经网络(CNN)技术,研究者能够将不同艺术风格的特征应用到内容图像上,从而...
总的来说,说话人识别技术结合了信号处理、概率统计和机器学习等多学科知识,而张军英的书无疑为读者提供了一个深入了解这一领域的机会。通过阅读《说话人识别的现代方法与技术》,读者不仅可以掌握VQ、GMM和HMM等...
在线算法(On-line Algorithms)是计算机科学领域内一个重要的研究方向,主要关注在信息逐步到达的情况下,算法如何做出即时决策的问题。与传统的离线算法不同,后者通常假设所有输入数据在算法开始执行前就已经全部...
- 实际问题的应用,例如列出方程解决问题:杨老师买铅笔的花费 `0.6x = 3`,电动车行驶的距离 `1.2x = 30`,以及杨昊坤和刘帮学写字总数 `x + y = 48`。 5. **历史背景**: - 方程的历史由来已久,古埃及和中国的...
用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。 对操作系统的兴趣由来已久,只是一直未能找到入门之径。操作系统教材是个令人生畏的东西,它可以告诉人有什么,却...
【超光速问题与电磁波异常传播】是一个深入探讨物理学领域中的特殊现象的主题,涉及到光速不变性原理、量子隧道效应以及通信技术的发展。本文主要分析了超光速现象的可能性和电磁波传播的异常情况。 首先,光速的...