- 浏览: 433544 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 4295关于回调早就听说过,但是不曾理解过,周日的上午外面阳光灿烂,我 ... -
java源文件夹打包
2012-04-01 12:49 1113有时候我们可能需要修改源文件来适应自己的需求 案 ... -
使用命令行的方式启动Mina
2012-02-29 09:50 0/** * 使用命令行的方式启动Mina ... -
MD5的工具方法使用
2011-12-07 10:33 1586package com.cdl.test; impo ... -
二进制基础(负数转二进制)
2011-10-30 14:49 2173比如,假设有一 int 类型的数,值为5,那么,我们知道它在计 ... -
java.util包的集合框架应用
2011-10-27 23:19 1300package mix.test; import j ... -
对Entity的未用字段进行借鸡下蛋
2011-09-20 15:00 1204. 1.实体 public class Image ... -
不要再困扰在String与StringBuffer(StringBuilder)的区别上鸟
2011-06-29 16:44 1140无论是初学者还是在java ... -
在myeclipse8.5中导出uml类图
2011-06-21 19:59 1433百度一下:myeclipse类图 . http://wenk ... -
用一下UML建模工具Rational Rose以及类图的基本关系
2011-06-09 14:24 10728. 基本的类图关系: 编码实现: packa ... -
统计某一数组中重复数字的次数
2011-04-28 18:15 5673. 今天上谯老师软件项目管理方法与实践课时给出了一个他曾经留 ... -
模仿String.indexOf,判断一个字符串是否包含另一个字符串
2011-04-26 15:42 4271. 目录: 一.方法介绍 二.图示意 三.源代码 一.方法 ... -
在MyEclipse中添加Java、Struts...源码
2011-03-09 15:14 1117三种方法: 第一种: “window”-> " ... -
使用接口的核心原因:为了向上转型为多个基类型,以及由此带来的灵活。
2010-12-01 13:45 1102package thinkingInJava.interf ... -
后台打印在参看程序执行流程中的重要作用
2010-11-15 13:19 974附注:在每个方法里打印”进入这个方法、方法的名称”,这样 ... -
自定义类中2个元素的比较升级到3个元素的比较
2010-10-28 23:26 1205可以先参考一下前面的一篇文章:为了比较,让自己的类实现Comp ... -
给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
2010-10-26 23:59 2775关于Map.Entry可以参看在容器中使用增强的for循环, ... -
在容器中使用增强的for循环,简洁大气,结构清晰
2010-10-26 21:44 1463除了增强的for循环使代 ... -
求模( Modulus )与求余(Remainder) (转)
2010-10-26 17:37 2426import java.math.BigInteger; ... -
为了比较,让自己的类实现Comparable接口,重写compareTo
2010-10-26 14:56 20750首先需要实现带泛型的Comparable接口,按照自己想要 ...
相关推荐
感官分析技术由来已久.pdf
Target的例子印证了维克托·迈尔-舍恩伯格提过的一个很有指导意义的观点:通过找出一个关联物并监控它,就可以预测未来。Target通过监测购买者购买商品的时间和品种来准确预测顾客的孕期,这就是对数据的二次利用的...
网易云音乐产品分析:竞争由来已久,鹿死谁手还未可知.pdf
僵尸论证、功能主义等理论都未能很好处理这个问题,找到一种合适的研究进路才是揭开"难问题"首要前提。一种"自然化"的趋势影响之下,还原论主张把意识问题还原到神经科学领域中,通过神经科学研究解读意识问题。还原论...
用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。 对操作系统的兴趣由来已久,只是一直未能找到入门之径。操作系统教材是个令人生畏的东西,它可以告诉人有什么,却...
嵌入式系统硬件资源是相对固定且有限,为了适应环境,就需要系统从软/硬件上可重构。基于此,提出了一种基于可配置...该模型在某航空机载设备中得到实际应用,解决了由来已久的问题,提高了系统的灵活性和自适应性。
[ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.part3 用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。 对操作系统的兴趣由来已久,只是一直未能找到入门之径...
“信息迷航”和“信息过载”问题由来已久,产业界和学术界都为解决这类问题进行了大量的尝试。推荐系统能够帮助用户在海量的产品空间中进行筛选,同时尽量减少用户的参与,将信息在合适的时间、地点主动推送给用户。...
如果需要实现一个线程或有效个线程负责对SocketChannel数据的读操作,为了保证线程安全,同一时间需要保证只有一个线程在负责读操作。即需要采用SelectionKey.cancel()从注册的Selector中取消对该Selection的监视,...
萌生写论坛的意图由来已久,但编写一个论坛程序工作量实在不小,在几经权衡之后,于4月底开始论坛整体的规划设计,力图制作一个速度一流的论坛,故最初命名:FasterBoard,但后台发现已有一个FastBoard论坛,虽然是...
具体来讲,就是人只要给出关于某程序要求的非常高级的描述,计算机就会自动生成一个能完成这个要求目标的具体程序。 相当于给机器配置了一个"超级编译系统", 它能够对高级描述进行处理, 通过规划过程, 生成所需的程序...
介绍GIS(地理信息系统)中的坐标系的想法由来已久,因为工作中我发现有不少GIS 专业的学生在博士毕业后仍然在坐标系的概念理解和实际操作等方面不太清楚,而保证数据 坐标系的正确与合理是数据分析的前提。今年有幸...
萌生写论坛的意图由来已久,但编写一个论坛程序工作量实在不小,在几经权衡之后,于4月底开始论坛整体的规划设计,力图制作一个速度一流的论坛,故最初命名:FasterBoard,但后台发现已有一个FastBoard论坛,虽然是...
IE的安全问题由来已久,从近年来20多个已知的“严重”等级的安全公告中可以看出IE的安全性设计还亟待解决!毕竟IE是与Windows紧密集成在一起的。也正因为如此,IE的安全设计一直是与操作系统息息相关的--IE攻陷,...
[ORANGE’S:一个操作系统的实现].于渊.清晰扫描版.part2 大小135MB,高清扫描版,分三个包上传的,请下全解压。 用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。 ...
现在,奥斯汀另一个受人尊敬机构-戴尔公司,凭借其数码自动唱片点唱机(Dell DJ),这一数码音乐播放器的导入,在音乐领域崭露头角。这一款小巧但强大的音乐播放器只是戴尔进军消费类电子产品领域广泛举措中的一...
从长期来看,笔者认为物联网确实能形成巨大的市场规模,但近期仍然面临着一系列的挑战,需要产业链上各个合作伙伴协同解决。 2.物联网产业链现状 在物联网概念热炒之前,我国的物联网产业链已经存在,但主要以...
这使我对于正确调参方法产生了强烈的兴趣,“优化”这一概念本质上是一个数学问题,对于一个决策程序能否正确高效决策有着至关重要的作用。详细介绍参考:...
其他工程师对于仿真嗤之以鼻,只通过手算和测量来解决问题。我个人认为均衡的方法才是最好的办法。我喜欢用计算、仿真和测量来试着确认电路的有效性。如果你在所有三个方法中的结果都是一致的,那么你就会对你的解决...
由于分区未对齐而不可避免地造成磁盘子系统性能下降问题由来已久。这个问题最初仅仅是让IT管理员头疼,而随着SSD(固态硬盘)和超高容量硬盘的普及,现在已经成为困扰所有用户的问题。 此硬盘分区对齐工具可以在不...