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..

你可能感兴趣的:(java实现)