前言
前边已经对Guava类库做了简单介绍(博文:Java代码优雅之道-Guava(有相关jar包下载)),下面就简单介绍操作Set,Map,List集合的工具类的使用,学会灵活使用这些工具,会使用我们在开发中,更加省时省力,代码健壮性和可读性更高,更简洁,这也是我所谓的“代码优雅”,让我们开发中省出时间来去处理更重要的东西,废话不多说,一看代码就全明了了。
创建泛型集合更加简介
//创建泛型集合更加简介
List<String> stringList=Lists.newArrayList();//创建List
Set<String> stringSet=Sets.newHashSet();//创建Set
Map<String,Map<String,List<String>>> map=Maps.newHashMap();//创建Map
创建指定初始容量的集合
//创建指定初始容量的集合
List<String> listWithSize=Lists.newArrayListWithCapacity(10);//创建指定初始大小容量的List
Set<String> setWithSize=Sets.newHashSetWithExpectedSize(10);//创建指定初始大小的Set
Map<String,Map<String,List<String>>> mapWithSize=Maps.newHashMapWithExpectedSize(10);//创建指定初始化大小的Map
初始化时,就指定包含元素
//初始化时,就指定包含元素
List<String> listWithElem=Lists.newArrayList("chen","lei","xing");
Set<String> setWithElem=Sets.newHashSet("chen","lei","xing");
简单创建不可变集合
//简单创建不可变集合
ImmutableList<String> noList=ImmutableList.of("aa","bb","cc");
ImmutableMap<String,String> noMap=ImmutableMap.of("key1","value1","key2","value2");
可存放相等元素的Set集合Multiset和Map集合multimap
//可存放相等元素的Set集合Multiset和Map集合multimap
Multiset<String> multiSet = HashMultiset.create();
multiSet.add("chen");
multiSet.add("chen");
multiSet.add("xing");
for(String s:multiSet){
System.out.println(s);
}
Multimap<String,String> multiMap=HashMultimap.create();
multiMap.put("chen","11");
multiMap.put("chen","22");
for(Map.Entry<String,String> entry:multiMap.entries()){
System.out.println("key:"+entry.getKey()+" value:"+entry.getValue());
}
输出结果:
chen
chen
xing
key:chen value:22
key:chen value:11
找出2个Map的不同之处与相同之处,以Map形式返回
//找出2个Map的不同之处与相同之处,以Map形式返回
ImmutableMap<String,Integer> oneMap=ImmutableMap.of("key1",1,"key2",2);
ImmutableMap<String,Integer> twoMap=ImmutableMap.of("key11",11,"key2",2);
MapDifference<String,Integer> diffHadle=Maps.difference(oneMap,twoMap);
Map<String,Integer> commonMap=diffHadle.entriesInCommon();//{"key2",2},若无共同Entry,则返回长度为0的Map
Map<String,Integer> diffOnLeft=diffHadle.entriesOnlyOnLeft();//返回左边的Map中不同或者特有的元素
Map<String,Integer> diffOnRight=diffHadle.entriesOnlyOnRight();//返回右边的Map中不同或者特有的元素
for(Map.Entry<String, Integer> entry:diffOnRight.entrySet()){
System.out.println("共同Map中key:"+entry.getKey()+" value:"+entry.getValue());
}
输出结果:
共同Map中key:key11 value:11
找出2个Set的不相同的元素和相同的元素,以Set形式返回
//找出2个Set的不相同的元素和相同的元素,以Set形式返回
Set<String> oneSet=Sets.newHashSet("chen","lei","java");
Set<String> twoSet=Sets.newHashSet("chen","lei","hadoop");
SetView<String> diffSetHandle=Sets.difference(oneSet, twoSet);//是得到左边中不同或者特有的元素,若无,则返回长度为0的集合
Set<String> diffImmutable=diffSetHandle.immutableCopy();//返回一个不可变的左边Set中特有元素集合的Set拷贝
Iterator iter=diffSetHandle.iterator();
while(iter.hasNext()){
System.out.println("Set的不同元素:"+iter.next().toString());
}
SetView<String> commonSet=Sets.intersection(oneSet, twoSet);
Set<String> commonImmutable=commonSet.immutableCopy();//返回一个不可变的2个Set中共同元素集合的Set拷贝
输出结果:
Set的不同元素:java
list反转分割
//Lists其他操作方法
List<String> listDemo=Lists.newArrayList("chen","lei","xing");
List<String> listRever=Lists.reverse(listDemo);//返回指定list的反转视图,所以大小是不可变的
List<String> listReverChange=ImmutableList.copyOf(listRever).reverse();//当然这个重新得到了一个新的反转后list,所以大小是可变的
List<List<String>> listList=Lists.partition(listDemo,2);//把List按指定大小分割{{"chen","lei"},{"xing"}}
org.apache.commons.collections工具包里的集合操作工具
org.apache.commons.collections为apache开源的集合操作工具包,里边也有很丰富的工具,也有存入相同key的Map,不过和Guava的效果不一样,感兴趣的及相关jar包的下载可以看看我的博客:
Java代码优雅之道-Guava
Strings类的简单使用-代码优雅之道Guava(一)
Files类的简单使用-代码优雅之道Guava(二)
set,map,list集合的交集差集存放相同值反转分割等-代码优雅之道Guava(三)
载请注明—作者:Java我人生(陈磊兴)原文出处:http://blog.csdn.net/chenleixing/article/details/44708533
最后,认真看过的网友们,大神们,如有感觉我这个程序猿有哪个地方说的不对或者不妥或者你有很好的提议或者建议或点子方法,还望您大恩大德施舍n秒的时间留下你的宝贵文字(留言),以便你,我,还有广大的程序猿们更快地成长与进步.......
分享到:
相关推荐
在 int_set 类中,我们还定义了三个函数,用于实现集合的交集、并集和差集运算。jiao 函数,用于计算两个集合的交集;bing 函数,用于计算两个集合的并集;cha 函数,用于计算两个集合的差集。 最后,我们在 main ...
集合的操作如差集、并集和交集是数据处理中常见的需求之一。本文将详细介绍如何在 Python 中实现两个列表之间的差集、并集以及交集操作,并提供相应的示例代码。 #### 一、差集 **定义:** 两个集合 A 和 B 的差集...
C++ stl set 求集合的交集并集差集 编译环境为dev C++
c++程序设计实现集合交集并集差集.docx
其中,`set`是要查找差集的原始集合,`set1`, `set2`等是任意序列,可以是其他集合、列表等。如果传入的是字典,会按键进行比较。例如: ```python set1 = {1, 2, 3} set2 = {3, 4, 5, 2} list1 = [2, 3] dict...
C++ 程序设计实现集合交集、并集、差集 本文档介绍如何使用 C++ 语言设计实现集合交集、并集、差集的操作。集合是数学中的一种基本概念,广泛应用于计算机科学、数据分析、机器学习等领域。在 C++ 程序设计中,实现...
在Delphi编程环境中,`TMemo`...通过`TStringList`提供的集合操作,我们可以方便地对`TMemo`的内容进行交集、差集和并集的计算,从而实现各种数据处理需求。了解并熟练运用这些功能,将极大地提高你的Delphi编程效率。
在实际开发中,我们经常遇到需要获取两个 List 或数组的差集交集问题,例如在树形选择节点中,需要根据之前选择的 ID 集合和新选择的 ID 集合来确定需要处理的 ID 集合。在本文中,我们将使用 C# Linq 来解决这个...
在C#编程语言中,处理集合操作是常见的任务之一,比如求两个集合的交集、并集、差集等。本篇文章将详细讲解如何利用C#的基础类库,特别是`List<T>`类来实现求差集的操作,无需手动编写复杂的算法。 首先,差集的...
查AB交集差集=非常小巧实用的小工具,你懂的!
集合的操作是基于数学中的集合论概念,其中包括并集、交集以及差集等。本主题将深入探讨差集的概念,以及如何在编程中实现两个集合的差集。 **差集(Difference Set)**是集合论中的一个重要概念,它指的是在一个...
常见的集合运算包括交集(两个集合共有的元素构成的新集合)、并集(两个集合所有元素构成的新集合)以及差集(一个集合去除另一个集合中的元素后剩下的元素构成的新集合)。 ### 二、程序代码分析 #### 1. 数据...
下面小编就为大家分享一篇java8 集合求差集、并集、交集的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集...
写得比较简单,随便看看就好 该代码是离散数学的一些简单运算
在本篇内容中,我们将深入探讨如何在C#中实现两个字符串数组之间的交集、并集与差集操作。此示例代码展示了如何利用LINQ(Language Integrated Query)方法来处理数组之间的这些集合运算。 ### 一、背景介绍 #### ...
在Python编程语言中,集合(Set)是一种无序且不包含重复元素的数据结构。集合提供了多种操作,包括对称差集。对称差集是指两个集合中各自独有的元素,即那些既不在A&B中的元素。这里我们将深入探讨如何在Python中...
给出的代码示例中包含了求解集合交集、并集和差集的代码框架,但存在一些错误和不足之处。这段代码的核心思路是利用数组作为集合的表示,并通过循环和条件判断来实现集合运算。 1. 输入部分: 代码中的`scanf`函数...
array_change_key_case -- 返回字符串键名全为小写或大写的数组 array_chunk -- 将一个数组分割成多个 array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values -- ...
在JavaScript编程中,集合操作是常见的数据处理任务,包括去重、交集、并集和差集。这些概念源于数学中的集合论,但在JS中,我们通常使用数组来模拟集合的概念。以下是对这些操作的详细解释和实现: 1. **去重**: ...