`
raymond.chen
  • 浏览: 1436869 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Lists、Sets、Maps和Collections2的使用

 
阅读更多

1、Lists

private static void list(){
	//ArrayList
	//ArrayList<String> arrayList = Lists.newArrayList();
	ArrayList<String> arrayList = Lists.newArrayListWithCapacity(10); //初始容量
	arrayList = Lists.newArrayList("D", "E", "F");
	arrayList.add("A");
	arrayList.add("B");
	arrayList.add("C");
	System.out.println(arrayList);
	
	//LinkedList 可以作为双端队列、堆栈使用
	LinkedList<String> linkedList = Lists.newLinkedList();
	linkedList.add("A");  
	linkedList.add("B");  
	linkedList.add("C");  
	System.out.println(linkedList);

	linkedList.addFirst("0");
	linkedList.addLast("1");
	System.out.println(linkedList);
	
	System.out.println(linkedList.getFirst());
	System.out.println(linkedList.getLast());
	System.out.println(linkedList.get(0));
	System.out.println(linkedList);
	
	linkedList.poll(); //从list头取元素
	linkedList.pop(); //出栈:取出list的第一个元素
	linkedList.push("D"); //入栈:将元素放入list的前面
	System.out.println(linkedList);
	
	//CopyOnWriteArrayList
	CopyOnWriteArrayList<String> copyOnWriteArrayList = Lists.newCopyOnWriteArrayList();
	copyOnWriteArrayList.add("A");
	copyOnWriteArrayList.addIfAbsent("A");
	System.out.println(copyOnWriteArrayList);
	
	//集合分割,指定子集合的最大大小
	List<List<String>> subList = Lists.partition(arrayList, 2);
	subList.stream().forEach(System.out::println);
	
	//集合翻转
	Lists.reverse(arrayList).stream().forEach(System.out::print);
	System.out.println();
	Lists.reverse(linkedList).stream().forEach(System.out::print);
}

 

2、Sets

private static void set(){
	//HashSet
//		HashSet<String> set1 = Sets.newHashSet();
	HashSet<String> set1 = Sets.newHashSet("A", "B", "C");
	set1.add("D");
	set1.add("E");
	set1.add("F");
	System.out.println(set1);
	
	//LinkedHashSet
	LinkedHashSet<String> set2 = Sets.newLinkedHashSet();
	set2.add("D");
	set2.add("E");
	set2.add("F");
	set2.add("G");
	set2.add("H");
	System.out.println(set2);
	
	SetView<String> setView1 = Sets.union(set1, set2); //并集
	System.out.println(setView1); //[A, B, C, D, E, F, G, H]
	
	SetView<String> setView2 = Sets.intersection(set1, set2); //交集
	System.out.println(setView2); //[D, E, F]
	
	SetView<String> setView3 = Sets.difference(set1, set2); //返回set1中不在set2的元素
	System.out.println(setView3); //[A, B, C]
	
	//笛卡尔积 cartesianProduct
	//[[gerbil, apple], [gerbil, orange], [gerbil, banana], [hamster, apple], [hamster, orange], [hamster, banana]]
	Set<String> animals = ImmutableSet.of("gerbil", "hamster");
	Set<String> fruits = ImmutableSet.of("apple", "orange", "banana");
	Set<List<String>> product = Sets.cartesianProduct(animals, fruits);

//[[gerbil, apple], [gerbil, orange], [gerbil, banana], [hamster, apple], [hamster, orange], [hamster, banana]]
	System.out.println(product);
	
	//ConcurrentHashMap
	Set<String> set11 = Sets.newConcurrentHashSet();
	
	//CopyOnWriteArraySet
	CopyOnWriteArraySet<String> set22 = Sets.newCopyOnWriteArraySet();
	
	//TreeSet
	TreeSet<String> treeSet = Sets.newTreeSet();
}

 

3、Maps

private static void map(){
	//两个map比较
	Map<String, Integer> left = ImmutableMap.of("a", 1, "b", 2, "c", 3, "d", 4);
	Map<String, Integer> right = ImmutableMap.of("c", 30, "d", 4, "e", 5, "f", 6);
	MapDifference<String, Integer> diff = Maps.difference(left, right);
	
	System.out.println(diff.entriesDiffering()); //返回键相同而值不同的两边的值  {c=(3, 30)}
	System.out.println(diff.entriesInCommon()); //交集:键值都匹配  {d=4}
	System.out.println(diff.entriesOnlyOnLeft()); //返回只存在于左边Map的项,匹配key  {a=1, b=2}
	System.out.println(diff.entriesOnlyOnRight()); //返回只存在于右边Map的项,匹配key  {e=5, f=6}
	System.out.println(diff.areEqual()); //两个map是否相等  false
	
	//ConcurrentMap
	ConcurrentMap<String, String> concurrentMap = Maps.newConcurrentMap();
	
	//HashMap
	HashMap<String, String> hashMap = Maps.newHashMap();
	
	//LinkedHashMap
	LinkedHashMap<String, String> linkedHashMap = Maps.newLinkedHashMap();
	
	//TreeMap
	TreeMap<String, String> treeMap = Maps.newTreeMap();
}

 

4、Collections2

private static void collections2() {
	//集合数据过滤:apply方法等于true时返回
	ImmutableList<String> list = ImmutableList.of("A", "B", "BC", "D", "AE");
	Collection<String> collection1 = Collections2.filter(list, new Predicate<String>() {
		public boolean apply(String input) {
			return input.indexOf("A") >= 0;
		};
	});
	System.out.println(collection1); //[A, AE]
	
	//集合数据转换:  
	Collection<String> collection2 = Collections2.transform(list, new Function<String, String>() {
		@Override
		public String apply(String input) {
			return input.toLowerCase();
		}
	});
	System.out.println(collection2); //[a, b, bc, d, ae]
}

 

分享到:
评论

相关推荐

    google-collections jar包

    Google Collections(Guava)库不仅限于`Maps`模块,还包括`Lists`、`Sets`、`Multisets`、`Iterators`等多个子模块,它们都提供了丰富的功能和优化,使得Java编程更加简洁和高效。在实际开发中,熟练掌握并运用这些...

    google-collections.zip

    5. **预定义的实用工具类**:如 Lists、Sets、Maps 提供了一些通用的操作方法,如 list 的分片操作、set 的并集、交集和差集计算,以及 map 的合并等。 6. ** Predicates**:Predicates 类提供了一组预定义的谓词...

    Collections-C:通用数据结构库

    在实际使用Collections-C时,开发人员可以方便地导入这些数据结构,通过其提供的API来创建、操作和管理数据。这些数据结构的实现通常会考虑效率和内存管理,以适应C语言的特性。通过Collections-C,你可以更专注于...

    gs-collection-study:'gs-collections'(goldmansachs java 集合框架)研究项目

    2. **Lists**:提供了线程安全的列表和不可变列表,以及一些实用的列表操作方法。 3. **Sets**:包括不包含重复元素的集合和可计数的多重集。 4. **Maps**:支持多值映射、有序映射和不可变映射。 5. **Queues**:...

    collections15:现在很难找到的APACHE集合的存储库-通用源代码-Source code collection

    4. **工厂方法**:提供了一种创建集合实例的方式,可以根据需求选择合适的实现,如Lists、Sets、Maps等静态工厂类。 5. **转换器**:允许将一个集合转换为另一个集合,以适应不同的使用场景,例如ListUtils、...

    google-collect-1.0.jar.zip

    2. **实用工具类**:包含各种实用方法,如Lists、Sets、Maps的静态工厂方法,以及字符串处理、数组操作和日期时间处理等功能。 3. **函数式编程**:支持函数式编程风格,包括函数接口、 Predicates(谓词)、...

    google-collect

    谷歌集合框架还引入了丰富的单元测试工具,如`Iterables`, `Collections2`, `Maps`等,帮助开发者更好地验证集合操作的正确性。此外,它还优化了集合的性能,例如通过使用轻量级数据结构和高效的算法,减少了内存...

    28个java常用的工具类

    16. **Collections.unmodifiable*()**:创建不可修改的集合视图,如Lists、Sets和Maps。 17. **List.subList()**:获取列表的子列表,不改变原列表。 18. **Stream API**:Java 8引入,用于处理集合数据的函数式...

    Hibernate参考文档

    Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance) 19.6.1. 监测SessionFactory 19.6.2. ...

    googleCollection

    谷歌集合库还包含许多其他工具类,如`Preconditions`用于参数检查,`Joiner`用于字符串连接,`Collections2`提供了对标准库集合的增强操作,以及`Optional`类用于表示可能不存在的值等。 总的来说,`...

    Hibernate中文详细学习文档

    Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance) 19.6.1. 监测SessionFactory 19.6.2. ...

    fastutil:Fastutils 的克隆 (fastutil.di.unimi.it)

    快速实用程序介绍`fastutil` 通过提供特定类型的 `maps`、`sets`、`lists` 和 `queues` 扩展了 `Java:trade_mark: Collections Framework`,具有较小的内存占用和快速访问和插入; 还提供大型(64 位)`arrays`、`...

    Hibernate 中文 html 帮助文档

    Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance) 19.6.1. 监测SessionFactory 19.6.2. ...

    最全Hibernate 参考文档

    Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance) 19.6.1. 监测SessionFactory 19.6.2. ...

    hibernate3.04中文文档.chm

    Lists, maps 和sets用于更新效率最高 20.5.3. Bag和list是反向集合类中效率最高的 20.5.4. 一次性删除(One shot delete) 20.6. 监测性能(Monitoring performance) 20.6.1. 监测SessionFactory 20.6.2...

    google guava23.5

    - **Lists**, **Sets** 和 **Maps** 的并发实现,如 `ConcurrentHashMultiset` 和 `Striped64`。 - **Futures**:增强的异步计算模型,支持取消任务和检查结果是否可用。 - **CountDownLatch** 和 **...

    hibernate 框架详解

    混合使用“每个类分层结构一张表”和“每个子类一张表” 10.1.5. 每个具体类一张表(Table per concrete class) 10.1.6. Table per concrete class, using implicit polymorphism 10.1.7. 隐式多态和其他继承映射...

Global site tag (gtag.js) - Google Analytics