Java兑现标签云
Java实现标签云
Java实现标签云
Java实现标签云
博客的标签云功能实现已经很久了,但是只有标签功能,没有云的功能,囧!~~~
标签云主要有以下几点重要的 功能:
能根据标签下面文章的多少来决定标签的显示样式的大小
标签云能实现随机颜色
这样标签云就能云起来了,每个标签的字体大小根据数量来决定,数量越多的字体越大,最小的数量也使用12px字体,这样看起来不会太累,颜色直接随机好了
01
|
public
void
tag_cloud(Map<String, Integer> tags) {
|
02
|
int
maxsize =
38
;
//最大字体大小
|
03
|
int
minsize =
12
;
|
04
|
List<Integer> list2 = CollectionUtils.toList(tags);
//这里是我自己的内库实现的map转换为list
|
05
|
int
maxval = CollectionUtils.max(list2);
//获取标签下文章数量的最大值
|
06
|
int
minval = CollectionUtils.min(list2);
//获取最小值
|
07
|
int
spread = maxval - minval;
|
08
|
int
step=
1
;
|
09
|
if
(spread!=
0
)
|
10
|
step = (maxsize - minsize) / spread;
|
11
|
String[] color =
new
String[] {
"#FF0000"
,
"#FFCC00"
,
"#FF9900"
,
|
12
|
"#0099FF"
,
"#999999"
};
|
13
|
Iterator<String> it = tags.keySet().iterator();
|
14
|
while
(it.hasNext()) {
|
15
|
String key = it.next();
|
16
|
int
val = tags.get(key);
|
17
|
int
index = RandomUtil.nextInt(
0
, color.length -
1
);
//产生0到数组长度的随机数字,来实现随机颜色
|
18
|
int
size = Math.round(minsize + ((val - minval) * step));
|
19
|
System.out.println(
"<a href=\"#\" style=\"font-size:"
+size+
"px;color:"
+color[index]+
"\">"
+key+
"</a>"
);
|
20
|
}
|
21
|
}
|
使用方法:
01
|
Map<String, Integer> tags=
new
HashMap<String, Integer>();
|
02
|
tags.put(
"java"
,
20
);
|
03
|
tags.put(
"ruby"
,
2
);
|
04
|
tags.put(
"groovy"
,
4
);
|
05
|
tags.put(
"php"
,
11
);
|
06
|
tags.put(
"scala"
,
2
);
|
07
|
tags.put(
"js"
,
8
);
|
08
|
tags.put(
"jquery"
,
16
);
|
09
|
tags.put(
"struts"
,
20
);
|
10
|
tags.put(
"c"
,
20
);
|
11
|
tags.put(
"sql"
,
10
);
|
12
|
tag_cloud(tags);
|
原理基本上就这样了。。。,一个简单的标签云功能就出来了,说实话找遍百度和google都没有java 实现标签云的相关文章....最后还是根据一php哥们的思想转换为JAVA的,可惜忘了那兄弟的出处了,再次感谢下这为未知的哥们的无私贡献
上面的代码是我修改过的只是为了更好的演示tags的功能,大家可以修改成自己的POJO 来代替泛型 中的String..
1 楼
lfsy0
2011-12-05
你好 ,看到你这个蛮有意思的,能给我源代码吗,1913798942@qq.com
2 楼
czg18596
2011-12-14
老兄你好,能给一下你的源代码吗?谢谢,120940002@qq.com
3 楼
mjj
2012-05-07
兄弟能否抄我一份623333581@qq.com
共进取
共进取