数学包含是什么意思,费用包含是什么意思

在公司里遇到2个String类型的字符串需要进行包含,被包含,部分包含或者完全不包含的判断。想了一个思路,分享一下,希望能抛砖引玉假设有2个字符串:StringA1="1_2_3_4";StringA2="3_4_5_6";写一个方法能判断出是属于如题的哪一种情况。1、首先我们先将字符串转成Hash

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

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

假设有2个字符串:

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

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

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

Set setA1=new HashSet();
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!!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 dashuju120@homevips.uu.me 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.dashuju120.com/2246.html