首页 > 代码库 > Google的Guava之Collection升华
Google的Guava之Collection升华
至于Guava这个这里就不多说了,上一篇已经讲得很详细了!这次主要是分享一下Guava对集合的一些升华处理,好啦,不多说,直接上代码:
package com.joyce.guava.bean; /** * 学生实体类 * * @author Joyce.Luo * @date 2014-6-19 下午02:37:19 */ public class Student { /** * 学号 */ private Integer stuId; /** * 姓名 */ private String stuName; /** * 年龄 */ private Integer stuAge; /** * @return the stuId */ public Integer getStuId() { return stuId; } /** * @param stuId * the stuId to set */ public void setStuId(Integer stuId) { this.stuId = stuId; } /** * @return the stuName */ public String getStuName() { return stuName; } /** * @param stuName * the stuName to set */ public void setStuName(String stuName) { this.stuName = stuName; } /** * @return the stuAge */ public Integer getStuAge() { return stuAge; } /** * @param stuAge * the stuAge to set */ public void setStuAge(Integer stuAge) { this.stuAge = stuAge; } /** * */ public Student() { super(); } /** * @param stuId * @param stuName * @param stuAge */ public Student(Integer stuId, String stuName, Integer stuAge) { super(); this.stuId = stuId; this.stuName = stuName; this.stuAge = stuAge; } }
实体类有了,主要是为了在集合中使用提供方便!关键在于:
/** * @Description: * * @Title: SetGuava.java * @Package com.joyce.guava.main * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:03:53 * @version V2.0 */ package com.joyce.guava.main; import java.util.Collections; import java.util.List; import java.util.Map; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.HashBasedTable; import com.google.common.collect.HashBiMap; import com.google.common.collect.HashMultiset; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Multiset; import com.google.common.collect.MutableClassToInstanceMap; import com.google.common.collect.Ordering; import com.google.common.collect.Table; import com.joyce.guava.bean.Student; /** * @Description: Guava的集合 * * @ClassName: SetGuava * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:03:53 * @version V2.0 */ public class SetGuava { public static void main(String[] args) { /** * Guava API 提供了有用的新的集合类型, 协同已经存在的java集合工作的很好。 分别是 Multimap, Multiset, * Table, BiMap, ClassToInstanceMap */ System.out.println("Multimap:一种key可以重复的map,子类有ListMultimap和SetMultimap,对应的通过key分别得到list和set"); testMultimap(); System.out.println("Multiset:不是集合,可以增加重复的元素,并且可以统计出重复元素的个数"); testMulitiset(); System.out.println("Table:相当于有两个key的map"); testTable(); System.out.println("BiMap: 是一个一一映射,可以通过key得到value,也可以通过value得到key"); testBitMap(); System.out.println("ClassToInstanceMap:map的key并不是只是一种类型"); testClassToInstanceMap(); System.out.println("排序,是guava一份非常灵活的比较类,可以被用来操作,扩展,当作比较器,排序提供了集合排序的很多控制 "); testOrder(); } /** * @Description: Multimap:一种key可以重复的map,子类有ListMultimap和SetMultimap,对应的通过key分别得到list和set * * * @Title: SetGuava.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:19:50 * @version V2.0 */ private static void testMultimap() { Multimap<String, Student> customersByType = ArrayListMultimap.create(); customersByType.put("abc", new Student(1, "Joyce", 20)); customersByType.put("abc", new Student(1, "Joyce One", 20)); customersByType.put("abc", new Student(1, "Joyce Two", 20)); customersByType.put("abc", new Student(1, "Joyce Three", 20)); customersByType.put("abcd", new Student(1, "Joyce Four", 20)); customersByType.put("abcde", new Student(1, "Joyce Five", 20)); System.out.println(customersByType.get("abc").size()); for (Student stu : customersByType.get("abc")) { System.out.println(stu.getStuName()); } } /** * @Description: Multiset:不是集合,可以增加重复的元素,并且可以统计出重复元素的个数 * * * @Title: SetGuava.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:19:59 * @version V2.0 */ private static void testMulitiset() { Multiset<Integer> multiSet = HashMultiset.create(); multiSet.add(10); multiSet.add(30); multiSet.add(30); multiSet.add(40); System.out.println(multiSet.count(30)); // 2 -- 统计XX出现的次数 System.out.println(multiSet.size()); // 4 -- 元素的个数 } /** * @Description: Table:相当于有两个key的map * * * @Title: SetGuava.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:24:43 * @version V2.0 */ private static void testTable() { Table<Integer, Integer, Student> personTable = HashBasedTable.create(); personTable.put(1, 20, new Student(1, "46546", 20)); personTable.put(0, 30, new Student(2, "46546", 30)); personTable.put(0, 25, new Student(3, "46546", 25)); personTable.put(1, 50, new Student(4, "46546", 50)); personTable.put(0, 27, new Student(5, "46546", 27)); personTable.put(1, 29, new Student(6, "46546", 29)); personTable.put(0, 38, new Student(7, "46546", 38)); personTable.put(1, 66, new Student(8, "46546", 66)); // 得到行集合 Map<Integer, Student> rowMap = personTable.row(0); Integer rowMax = Collections.max(rowMap.keySet()); System.out.println(rowMax); } /** * @Description: BiMap: 是一个一一映射,可以通过key得到value,也可以通过value得到key * * * @Title: SetGuava.java * @Copyright: Copyright (c) 2014 * * @author Comsys-LZP * @date 2014-6-26 上午11:36:59 * @version V2.0 */ private static void testBitMap() { // 双向map BiMap<Integer, String> biMap = HashBiMap.create(); biMap.put(1, "hello"); biMap.put(2, "helloa"); biMap.put(3, "world"); biMap.put(4, "worldb"); biMap.put(5, "my"); biMap.put(6, "myc"); // 通过key取value String value = http://www.mamicode.com/biMap.get(5);>效果如图:相信大家伙对上面的代码如果理解深入了的话,会明白了的!!!其实Guava在集合上面还提供了其他方法,这里就不一一分享了,有兴趣的大伙儿可以自己是私底下去好好研究一下!Guava资源下载地址:http://download.csdn.net/detail/luo201227/7207227,Ok,今天就到这里了!下次有机会再跟大家分享一下Guava中的其它升华。。。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。