您的位置 首页 java

java中2个集合是否包含,不包含的判断思路

在公司里遇到2个 String 类型的 字符串 需要进行包含,被包含,部分包含或者完全不包含的判断。

想了一个思路,分享一下,希望能抛砖引玉

假设有2个字符串:

 String A1="1_2_3_4";
String A2="3_4_5_6";  

写一个方法能判断出是属于如题的哪一种情况。

1、首先我们先将字符串转成HashSet,转的方法可以自行搜索,用HashSet的好处后面再说※

 Set setA1=new  Hash Set();
Set setA2=new HashSet();  

2、再申明4个 StringBuffer ,用于存放比较后的结果,方便判断。

 StringBuffer A1ExistA2=new StringBuffer();// A1存在A2里的元素
StringBuffer A1NotExistA2=new StringBuffer();// A1不存在A2里的元素
StringBuffer A2ExistA1=new StringBuffer();// A2存在A1里的元素
StringBuffer A2NotExistA1=new StringBuffer();// A2不存在A1里的元素  

3、好了我们现在开始说比较的思路。

先开始迭代A1,将A1中的每一个字符与A2进行contain判断,

举例:A2.contain(“1”),这里返回false,因为A2中没有字符1。A1NotExistA2.append(“1”)

再举例:A2.contain(“3”),这里返回true,因为A2中含有字符3。A1ExistA2.append(“3”)

以此类推,每次比较的结果放入StringBuffer。

迭代完后,再反过来迭代A2.

举例:A1.contain(“3”),这里返回true,因为A1中含有字符3。A2ExistA1.append(“3”)

再举例:A1.contain(“5”),这里返回false,因为A1中没有字符5。A2NotExistA1.append(“5”)

4、两个set全部迭代完后,我们拿到4个StirngBuffer,我们对4个SB进行校验,就可以获得我们想要的结果。

我们一共可以获得5种结果。先以我们例子来说。

 A1ExistA2=3,4
A1NotExistA2=1,2
A2ExistA1=3,4
A2NotExistA1=5,6  

4个SB都有数据,代表 A1与A2存在交集。

5、以此类推,再举例新的数据:

1>举例:A1=”1_2_3″ ,A2=”4_5_6″

这样的结果是:

 A1ExistA2=""
A1NotExistA2="1,2,3"
A2ExistA1=""
A2NotExistA1="4,5,6"  

A1ExistA2和A2ExistA1为空,A1NotExistA2和A2NotExistA1有数据,那么这种结果代表 A1与A2没有交集

2>举例:A1=”1_2_3_4″ ,A2=”1_2_3″

这样的结果是:

 A1ExistA2="1,2,3"
A1NotExistA2="4"
A2ExistA1="1,2,3"
A2NotExistA1=""  

A1ExistA2、A1NotExistA2和A2ExistA1有数据,A2NotExistA1为空,那么这种结果代表 A1包含A2

3>举例:A1=”1_2_3″ ,A2=”1_2_3_4″

这样的结果是:

 A1ExistA2="1,2,3"
A1NotExistA2=""
A2ExistA1="1,2,3"
A2NotExistA1="4"  

A1ExistA2、A2ExistA1和A2NotExistA1有数据,A1NotExistA2为空,那么这种结果代表 A2包含A1

4>举例:A1=”1_2_3″ ,A2=”3_2_1″

这样的结果是:

 A1ExistA2="1,2,3"
A1NotExistA2=""
A2ExistA1="3,2,1"
A2NotExistA1=""  

A1ExistA2和A2ExistA1有数据,A1NotExistA2和A2NotExistA1为空,那么这种结果代表 A1与A2正好包含(与顺序无关)


那么以上就是通过这种方式的比较,判断出5中包含的关系,大家可以在此基础上进行扩展和优化。

※之前说到用HashSet,其实用String来做contain的判断也是可以的,但是从性能上说,String的contain比set的Contain要慢,这个大家可以自行验证,性能这东西如果不知道也就无所谓,但是一旦知道,如果不去优化,就浑身不自在。

好了大家有什么好的方法和建议,欢迎评论。Woof!!

文章来源:智云一二三科技

文章标题:java中2个集合是否包含,不包含的判断思路

文章地址:https://www.zhihuclub.com/171861.shtml

关于作者: 智云科技

热门文章

网站地图