实践中的重构30_不做油漆匠

油漆匠的故事是编程文化中的一个著名故事。本地化如下。
小强毕业后得到一份街道办油漆匠的工作,工作内容是在马路中间喷涂油漆画线。上班第一天,他拿出一罐环保漆来到他负责的路段,喷涂了300米长的线。“小伙子很给力啊!”街道办徐大妈称赞道,然后给了他300大洋作为工钱。第二天,小强只喷涂了150米。“是不是昨晚没有睡好啊。算了,还是比原来的老王头麻利多了,还是小伙子干活又好又快啊。”徐大妈又掏了150大洋。第三天,小强只喷涂了30米长的马路。“才30米,怎么搞的!明天不用来了!”徐大妈已经不能忍受了。小强一边擦汗,一边委屈的说:“徐大妈,累死我了,现在画一点线要跑好远,油漆罐太远了。”
大家都是当笑话看,可惜这个笑话时不时的发生在你我身上。
	public ArrayList<String> generateWords_0(String[] lines) {
ArrayList<String> uniques = new ArrayList<String>();
for (int i = 0; i < lines.length; i++) {
List<String> words = split(lines[i]);
for (int j = 0; j < words.size(); j++)
if (!uniques.contains(words.get(j)))
uniques.add(words.get(j));

}
return uniques;
}

一边看这段程序,一边想着油漆匠的故事。油漆匠离我们并不遥远。
这段程序可以使用java集合框架类的特性重构如下。
注意,这段代码的需求必须返回单词的列表集合,但是不关心单词的顺序。
	public List<String> generateWords_1(String[] lines) {
Set<String> words = new HashSet<String>();
for (String line : lines) {
words.addAll(split(line));
}
return new ArrayList<String>(words);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值